LeetCode スタックおよびキュー アプリケーション - 239. 最大スライディング ウィンドウ

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

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

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

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

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

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

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

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

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

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

1.解決策 

239. 最大スライディング ウィンドウ

配列の左端から右端に移動するサイズのスライディング ウィンドウをnums持つ 整数の配列が与えられます 。k スライディング ウィンドウで k 数字のみを確認できます。スライディング ウィンドウは、一度に 1 ビットだけ右に移動します。

スライディング ウィンドウの最大値 を返します 

 

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