informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Halo semuanya, tujuan blog ini adalah untuk mencatat check-in studi selama liburan musim panas. Nanti akan disusun dalam kolom. Tujuan utamanya adalah untuk menyelesaikan studi struktur data selama liburan musim panas memposting beberapa blog terkait tentang implementasi struktur data dan beberapa kuis untuk pembelajaran dan penggunaan pribadi. Saya juga berharap Anda dapat banyak mendukung saya. Mohon tunjukkan kekurangannya.
Cukup gunakan array untuk mensimulasikan tumpukan, tetapi di sini saya mencoba menyelamatkan masalah dan kecepatan larinya tidak terlalu tinggi, dan ada banyak ruang untuk pengoptimalan.
- class MinStack {
-
- int[] el;
- int numsize;
-
- public MinStack() {
- el = new int[10000];
- int numsize = 0;
- }
-
- // private void grow(){
- // this.el=Arrays.copyof(el,2*el.lenth);
- // }
-
- public void push(int val) {
- // if (el.lenth == numsize) {
- // grow();
- // }
- el[numsize] = val;
- numsize++;
- }
-
- public int pop() {
- if (empty())
- return -1;
- return el[--numsize];
- }
-
- public int top() {
- return el[numsize - 1];
-
- }
-
- private boolean empty() {
- return numsize == 0;
- }
-
- public int getMin() {
- int num = el[0];
- for (int i = 0; i < numsize; i++) {
- if (el[i] < num)
- num = el[i];
- }
- return num;
- }
- }
-
- /**
- * Your MinStack object will be instantiated and called as such:
- * MinStack obj = new MinStack();
- * obj.push(val);
- * obj.pop();
- * int param_3 = obj.top();
- * int param_4 = obj.getMin();
- */
Analisis: Untuk menggunakan tabel urutan yang kita pelajari sebelumnya, kita menggunakan tabel urutan untuk menyelesaikan masalah ini. Gunakan tabel urutan untuk mensimulasikan array dua dimensiArray dua dimensi yang disimulasikan oleh tabel urutan tidak bisa begitu saja mengakses elemen melalui subskrip.
-
- class Solution {
- public List<List<Integer>> generate(int numRows) {
- List<List<Integer>> ret=new ArrayList<>();
- List<Integer> list=new ArrayList<>();
- list.add(1);
- ret.add(list);
- for(int i=1;i<numRows;i++){
- List<Integer> row=new ArrayList<>();
- row.add(1);
- List<Integer> a= ret.get(i-1);
- for (int j = 1; j < i; j++) {
- int val1=a.get(j);
- int val2=a.get(j-1);
- row.add(val1+val2);
- }
- row.add(1);
- ret.add(row);
- }
- return ret;
- }
- }
-
Catatan: Ekspresi Polandia adalah ekspresi yang dapat dipahami oleh komputer
Ide: Lintasi array, tentukan dulu apakah stringnya berupa angka,Jika berupa angka, maka diubah menjadi angka dan dimasukkan ke dalam tumpukan. Jika tidak, dua operan akan dikeluarkan, dan operan setelah "+", "-", "*" atau "/" akan dikeluarkan setelahnya. operator digunakan., yang tersisa di tumpukan adalah jawaban akhir
- class Solution {
- public int evalRPN(String[] tokens) {
- Stack<Integer> st = new Stack();
- for (int i = 0; i < tokens.length; i++) {
- String str = tokens[i];
- if (o(str) == false) {
- int val = Integer.parseInt(str);
- st.push(val);
- } else {
- int val1 = st.pop();
- int val2 = st.pop();
- switch (str) {
- case "+":
- st.push(val2+val1);
- break;
- case "-":
- st.push(val2-val1);
- break;
- case "*":
- st.push(val2*val1);
- break;
- case "/":
- st.push(val2/val1);
- break;
- }
-
- }
- }
- return st.peek();
- }
-
-
-
- private boolean o (String s){
- if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {
-
- return true;
- }
- return false;
- }
- }
-
Sekian untuk blog ini, terima kasih semuanya