LeetCode T155-最小栈问题

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) -- 将元素 x 推入栈中。

pop() -- 删除栈顶的元素。

top() -- 获取栈顶元素。

getMin() -- 检索栈中的最小元素。

解题思路:创建两个栈,一个负责不断存数据,一个只负责存最小的值(栈顶值最小)

class MinStack {

    Stack<Integer> data;

    Stack<Integer> minStack;

    /** initialize your data structure here. */

    public MinStack() {

        data = new Stack<Integer>();

        minStack = new Stack<Integer>();

    }


//核心代码

    public void push(int x) {

        data.push(x);

        if(minStack.empty()){

            minStack.push(x);

        }else{

            //当x大于最小栈栈顶元素时,将最小值赋给x,并push到最小栈中

            if(minStack.peek() < x){

                x = minStack.peek();

            }

            minStack.push(x);

        }

    }


    public void pop() {


        data.pop();

        minStack.pop();

    }


    public int top() {

        return data.peek();

    }


    public int getMin() {

        return minStack.peek();

    }

}

/**

* Your MinStack object will be instantiated and called as such:

* MinStack obj = new MinStack();

* obj.push(x);

* obj.pop();

* int param_3 = obj.top();

* int param_4 = obj.getMin();

*/

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容