关闭

LeetCode:Min Stack

标签: leetcodejava
137人阅读 评论(0) 收藏 举报
分类:

问题描述:

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.

思路:

刚开始想到的方法是遍历整个栈,将最小值返回,最后想到以前的一道题目和这到题目类似,果断采取了两个栈,一个放最小值。有一个地方是需要特别注意的:

if(stack.peek().equals(minstack.peek()))这里用到了一个函数equals,目的是比较二者大小。

JAVA代码:

class MinStack {
    Stack<Integer> stack = new Stack<>();
    Stack<Integer> minstack = new Stack<>();
    public void push(int x) {
        if(minstack.isEmpty() || x <= minstack.peek())
            minstack.push(x);
        stack.push(x);
    }

    public void pop() {
        if(stack.peek().equals(minstack.peek()))
            minstack.pop();
        stack.pop();
    }

    public int top() {
            return stack.peek();
    }

    public int getMin() {
        return minstack.peek();
        
    }
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:130177次
    • 积分:4554
    • 等级:
    • 排名:第6785名
    • 原创:345篇
    • 转载:33篇
    • 译文:0篇
    • 评论:13条
    最新评论