LeetCode スタックとキュー アプリケーション - 20. 有効な括弧

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

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

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

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

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

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

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

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

1.解決策 

20. 有効な括弧

'('')''{''}'、のみを含む 文字列が 与えられた場合 '[' その文字列が有効かどうかを判断します。']'s

有効な文字列は次を満たす必要があります。

  1. 開き括弧は、同じタイプの閉じ括弧で閉じる必要があります。
  2. 左括弧は正しい順序で閉じる必要があります。
  3. 各閉じ括弧には、対応する同じタイプの開き括弧があります

 

class MyQueue {
        Stack<Integer> stack1;
        Stack<Integer> stack2;
    public MyQueue() {
        stack1=new Stack<>();
        stack2=new Stack<>();
    }
    
    public void push(int x) {
        stack1.push(x);
    }
    
    public int pop() {
        if(!stack2.isEmpty()){
            return stack2.pop();
        }
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }
    
    public int peek() {
        if(!stack2.isEmpty()){
            return stack2.peek();
          }
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.peek();
    }
    
    public boolean empty() {
        return stack1.isEmpty()&&stack2.isEmpty();
    }
}

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/127140386