劍指offer 20:包含min函數的棧--- Java實現

劍指offer每日一題算法題(java解法)

方便日後複習,從今天開始。

算法之行始於足下

[編程題]包含min函數的棧-- Java實現

------------------------------------------------------------------------------------------------------
題目描述
定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。
前提:
1.熟悉棧的操作原理,進出規則。
2.瞭解棧的基本方法,push,pop,peek等

解題思路:
1.利用了一個輔助棧進行存值,每次給第一個棧存的時候,都要看看是不是比第二個棧裏的值大,不是的話就給第二個棧也push,這樣就能保證第二個棧的棧頂絕對是最小值.
2.出棧的時候,只有2個棧頂的值相等第二個棧纔會出棧,這樣保證了出去之後,下一個棧頂還是最小值

import java.util.Stack;
public class Solution {
    Stack<Integer> stack1=new Stack<Integer>();
    Stack<Integer> stack2=new Stack<Integer>();
    public void push(int node) {
        stack1.push(node);
        if(stack2.empty()){
            stack2.push(node);
        }
        if(stack1.peek()<=stack2.peek()){
                stack2.push(node);
        }
    }
    public void pop() {
        if(stack1.peek()==stack2.peek()){
            stack2.pop();
        }
        stack1.pop();
    }
    public int top() {
        return stack1.peek();
    }
    public int min() {
        return stack2.peek();
    }
}
發佈了56 篇原創文章 · 獲贊 11 · 訪問量 2053
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章