LeetCode スタックおよびキュー アプリケーション - 150. 逆ポーランド式の評価

スタックとキューが解決できる古典的な問題は何ですか? すべての質問は私のホームページで見つけることができます。

(1) ブラケット合わせ問題(スタック)

(2)文字列重複排除問題(スタック)

  (3)逆ポーランド式問題(スタック)

  (4) 次に大きい要素 (モノトニック スタック)

⑤雨水受け(モノトーンスタック)

(6) スライディング ウィンドウ最大問題 (単調待ち行列) 

(7) 出現回数の多い上位 K 要素 (優先キュー)

(8) スタック実装キュー

(9) キュー実装スタック 

1.解決策 

150. 逆ポーランド式評価

 逆ポーランド記法式を評価します。

有効な演算子には +、、、、-があります 。各オペランドは、整数または別の逆ポーランド式にすることができます。*/

2 つの整数の除算では、整数部分のみが保持されることに注意してください 。

特定の逆ポーランド式が常に有効であることが保証されています。つまり、式は常に有効な値になり、0 による除算はありません。

 

class Solution {
    //可以看官方题解视频
    public int evalRPN(String[] tokens) {
        Deque<Integer> deque=new LinkedList<>();
        for(int i=0;i<tokens.length;i++){
            String token=tokens[i];
            if(token.equals("+")){
            int nums1=deque.pop();
            int nums2=deque.pop();
            deque.push(nums1+nums2);
            }else if(token.equals("-")){
            int nums1=deque.pop();
            int nums2=deque.pop();
            deque.push(nums2-nums1);
            }else if(token.equals("*")){
            int nums1=deque.pop();
            int nums2=deque.pop();
            deque.push(nums1*nums2);
            }else if(token.equals("/")){
            int nums1=deque.pop();
            int nums2=deque.pop();
            deque.push(nums2/nums1);
            }else{
            deque.push(Integer.valueOf(token));
            }
        }
        return deque.peek();
    }
}

2.スタックの基礎知識

スタックの最も注目すべき機能は、先入れ後出しです。

1. Java でのスタックの一般的な実装クラス:

最も基本的な実装: Stack<Integer> stack=new Stack<>();

両端キューの実装: Deque<Integer> stack=new LinkedList<>();

2.スタックの一般的な方法

push(x) -- 要素をキューの末尾にプッシュします。
pop() -- キューの先頭から要素を削除します。
peek() -- キューの先頭にある要素を返します。
empty() -- キューが空かどうかを返します。

3.キューの基礎知識

キューの最も注目すべき機能は、先入れ先出しです。

1. Java でのキューの一般的な実装クラス:

通常のキュー: Queue<Integer> queue=new LinkedList<>();

両端キュー: Deque<Integer> queue=new LinkedList<>();

プライオリティ キュー: PriorityQueue<Integer> queue=new PriorityQueue<>();

2. キューの一般的な方法

add 要素を追加する キューがいっぱいの場合、IIIegaISlabEepeplian 例外をスローします remove
キューの先頭の要素を削除して返します キューが空の場合、NoSuchElementException 要素をスローします キューが空の場合、キュー
の先頭の要素を返します、次に NoSuchElementException をスローします

size 要素数
offer 要素を追加して true を返す キューがいっぱいの場合は false を返す
poll 削除してキューの先頭の要素を返す キューが空の場合は null を返す
peek キューの先頭の要素を返すキューが空の場合、null を返します


put 要素を追加し、キューがいっぱいの場合はブロックします。
take はキューの先頭にある要素を削除して返します。キューが空の場合はブロックします。

おすすめ

転載: blog.csdn.net/w20001118/article/details/127149042