Teknologian jakaminen

11. heinäkuuta oppimisen sisäänkirjautuminen, tietorakennepino

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Hei kaikki, tämän blogin tarkoitus on tallentaa opiskelujen sisäänkirjautuminen kesäloman aikana Postaa joitakin aiheeseen liittyviä blogeja ja tietokilpailuja henkilökohtaiseen opiskeluun ja käyttöön.

1. Likou 115, pienin pino

. - LeetCode

Simuloi pinon yksinkertaisesti käyttämällä taulukkoa, mutta tässä yritän säästää vaivaa ja ajonopeus ei ole kovin suuri, ja optimoinnille on paljon tilaa.

  1. class MinStack {
  2. int[] el;
  3. int numsize;
  4. public MinStack() {
  5. el = new int[10000];
  6. int numsize = 0;
  7. }
  8. // private void grow(){
  9. // this.el=Arrays.copyof(el,2*el.lenth);
  10. // }
  11. public void push(int val) {
  12. // if (el.lenth == numsize) {
  13. // grow();
  14. // }
  15. el[numsize] = val;
  16. numsize++;
  17. }
  18. public int pop() {
  19. if (empty())
  20. return -1;
  21. return el[--numsize];
  22. }
  23. public int top() {
  24. return el[numsize - 1];
  25. }
  26. private boolean empty() {
  27. return numsize == 0;
  28. }
  29. public int getMin() {
  30. int num = el[0];
  31. for (int i = 0; i < numsize; i++) {
  32. if (el[i] < num)
  33. num = el[i];
  34. }
  35. return num;
  36. }
  37. }
  38. /**
  39. * Your MinStack object will be instantiated and called as such:
  40. * MinStack obj = new MinStack();
  41. * obj.push(val);
  42. * obj.pop();
  43. * int param_3 = obj.top();
  44. * int param_4 = obj.getMin();
  45. */

2. Yang Huin kolmio

. - LeetCode

Analyysi: Jotta voisimme käyttää aiemmin opittua sekvenssitaulukkoa, käytämme sekvenssitaulukkoa kaksiulotteisen taulukon simuloimiseenSekvenssitaulukon simuloima kaksiulotteinen taulukko ei voi yksinkertaisesti käyttää elementtejä alaindeksien kautta.

  1. class Solution {
  2. public List<List<Integer>> generate(int numRows) {
  3. List<List<Integer>> ret=new ArrayList<>();
  4. List<Integer> list=new ArrayList<>();
  5. list.add(1);
  6. ret.add(list);
  7. for(int i=1;i<numRows;i++){
  8. List<Integer> row=new ArrayList<>();
  9. row.add(1);
  10. List<Integer> a= ret.get(i-1);
  11. for (int j = 1; j < i; j++) {
  12. int val1=a.get(j);
  13. int val2=a.get(j-1);
  14. row.add(val1+val2);
  15. }
  16. row.add(1);
  17. ret.add(row);
  18. }
  19. return ret;
  20. }
  21. }

Kolme, paina 150, arvioi käänteinen puolalainen lauseke

Huomautus: Puolalainen lauseke on ilmaus, jonka tietokoneet voivat ymmärtää

. - LeetCode

Idea: Kulje taulukko ja määritä ensin, onko merkkijono numero,Jos se on numero, se muunnetaan luvuksi ja työnnetään pinoon. Muussa tapauksessa otetaan pois kaksi operandia ja "+", "-", "*" tai "/" jälkeen oleva. operaattoria käytetään., mikä pinoon jää, on lopullinen vastaus

  1. class Solution {
  2. public int evalRPN(String[] tokens) {
  3. Stack<Integer> st = new Stack();
  4. for (int i = 0; i < tokens.length; i++) {
  5. String str = tokens[i];
  6. if (o(str) == false) {
  7. int val = Integer.parseInt(str);
  8. st.push(val);
  9. } else {
  10. int val1 = st.pop();
  11. int val2 = st.pop();
  12. switch (str) {
  13. case "+":
  14. st.push(val2+val1);
  15. break;
  16. case "-":
  17. st.push(val2-val1);
  18. break;
  19. case "*":
  20. st.push(val2*val1);
  21. break;
  22. case "/":
  23. st.push(val2/val1);
  24. break;
  25. }
  26. }
  27. }
  28. return st.peek();
  29. }
  30. private boolean o (String s){
  31. if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {
  32. return true;
  33. }
  34. return false;
  35. }
  36. }

Siinäpä tämä blogi, kiitos kaikille