[剣指offer][Java]min関数を含むスタック

1209 ワード

タイトル
スタックのデータ構造を定義し、スタックに含まれる最小要素を得ることができるmin関数(時間複雑度はO(1))をこのタイプで実装します.
プログラムコア思想
最小値を格納するスタックを定義します.最小値スタックはいつスタックに入る必要がありますか?スタック要素が最小値スタックトップ要素より小さい場合.スタック要素が最小値スタックトップ要素に等しい場合(たとえば、スタック要素が3,3でスタックトップ要素が入らない場合、3が1つしか入っていない場合、3がポップアップされると最小スタックが空になりますが、最小値は3です).スタックを出るには、どの時点で最小スタックが必要ですか?スタックを出る要素が最小スタックトップ要素に等しい場合(大は出なくてもいいです.最小スタックは最小値ですから.小は、どうして小さいのですか./笑).
他の人のコードを参考にして、もう一つの言い方は.スタック要素が最小スタックトップ要素より小さい場合は、スタックという要素をスタックします.そうでない場合は、スタック最小スタックトップ要素をスタックします.出桟は一緒に出桟したものです.
もっとよく理解できるかもしれません.
Tips
なし
コード#コード#
import java.util.Stack;

public class Solution {
    
    Stack stack1 = new Stack();
    Stack stack2 = new Stack();
    
    public void push(int node) {
        stack1.push(node);
        if(stack2.empty() || stack2.peek() >= node){
            stack2.push(node);
        }
    }
    
    public void pop() {
        int temp = stack1.pop();
        if(temp == stack2.peek()){
            stack2.pop();
        }
    }
    
    public int top() {
        return stack1.peek();
    }
    
    public int min() {
        return stack2.peek();
    }
}