[毎日の質問] 27:最小スタック

タイトルの説明

push、pop、top操作をサポートし、一定の時間で最小の要素を取得できるスタックを設計します。

  • (x)-push要素xをスタックにプッシュします。
  • スタックの最上部にある要素をpop()-deleteします。
  • top()-スタックの一番上の要素を取得します。
  • getMin()-スタック内の最小の要素を取得します。

例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

回答コード:

class MinStack {
    stack<int> m_data;
    stack<int> m_min;
public:
    /** initialize your data structure here. */
    MinStack() {

    }
    
    void push(int x) {
        m_data.push(x);

        if(m_min.empty() || m_min.top() >= x){
            m_min.push(x);
        }
    }
    
    void pop() {
        if(m_data.top() == m_min.top()){
            m_min.pop();
        }

        m_data.pop();
    }
    
    int top() {
        return m_data.top();
    }
    
    int getMin() {
        return m_min.top();
    }
};

別の意見がある場合は、メッセージを残して議論してください!

元の記事を152件公開 賞賛されている45件 10,000回以上の閲覧

おすすめ

転載: blog.csdn.net/AngelDg/article/details/105376010