劍指 offer 之實現帶min的棧

題目:定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。

思路:使用兩個棧,一個棧用來存放正常的數據,一個棧用來記錄到該數據爲止,棧中數據的最小值

import java.util.Stack;

public class StackMin {
    Stack stack = new Stack();
    Stack stackmin = new Stack();


    public void push(int node) {
        stack.push(node);
        if (this.stackmin.size() > 0){
            stackmin.push(Math.min((int)stackmin.peek(),node));
        } else {
            stackmin.push(node);
        }
    }

    public void pop() {
        if (this.stack.size() > 0){
            int data = (int)this.stack.pop();
            int stackmin_pop = (int)this.stackmin.pop();
        }
    }

    public int top() {
        if (this.stack.size() > 0){
            return (int)this.stack.peek();
        }
        return 0;
    }

    public int min() {
        if (this.stack.size() > 0){
            return (int)this.stackmin.peek();
        }

        return 0;
    }

    public static void main(String[] args) {
        StackMin s = new StackMin();
        s.push(19);
        s.push(21);
        s.push(5);
        s.push(-1);

        System.out.println(s.min());
        System.out.println(s.top());
        s.pop();
        System.out.println(s.min());
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章