Condivisione della tecnologia

11 luglio check-in di apprendimento, stack della struttura dei dati

2024-07-12

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

Ciao a tutti, lo scopo di questo blog è registrare il check-in di studio durante le vacanze estive. Successivamente verrà organizzato in una rubrica. L'intenzione principale è completare lo studio delle strutture dati durante le vacanze estive. Pertanto, lo farò pubblica alcuni blog correlati sull'implementazione della struttura dei dati e alcuni quiz per lo studio e l'uso personale. Spero anche che tu possa supportarmi molto. Per favore segnala eventuali carenze.

1. Likou 115, lo stack più piccolo

.-LeetCodice

Usa semplicemente un array per simulare uno stack, ma qui sto cercando di evitare problemi e la velocità di esecuzione non è molto elevata e c'è molto spazio per l'ottimizzazione.

  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. Triangolo Yang Hui

.-LeetCodice

Analisi: per utilizzare la tabella di sequenza che abbiamo imparato in precedenza, utilizziamo la tabella di sequenza per risolvere questo problema. Utilizzare la tabella di sequenza per simulare un array bidimensionaleL'array bidimensionale simulato dalla tabella di sequenza non può accedere semplicemente agli elementi tramite pedici.

  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. }

Tre, premi 150, valuta l'espressione polacca inversa

Nota: l'espressione polacca è un'espressione comprensibile dai computer

.-LeetCodice

Idea: attraversare l'array, determinare prima se la stringa è un numero,Se è un numero, viene convertito in un numero e inserito nello stack. Altrimenti, vengono eliminati due operandi e quello dopo "+", "-", "*" o "/" viene eliminato dopo. viene utilizzato l'operatore, ciò che rimane in pila è la risposta finale

  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. }

Per questo blog è tutto, grazie a tutti