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.
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.
- 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();
- */
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.
-
- 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;
- }
- }
-
Huomautus: Puolalainen lauseke on ilmaus, jonka tietokoneet voivat ymmärtää
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
- 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;
- }
- }
-
Siinäpä tämä blogi, kiitos kaikille