LeetCode(64)- Min Stack

来源:互联网 发布:js调用手机软键盘事件 编辑:程序博客网 时间:2024/06/16 13:31

题目:

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.

思路:

  • 题意:给出四个函数API,构造一个stack,而且能够返回最小值
  • 用双栈的策略,一个用来正常的存储,一个用来存贮最小值
  • 注意比较的时候。peek()函数要用equals函数比较,因为弹出的是对象

代码:

class MinStack {    Stack<Integer> stack = new Stack<Integer>();    Stack<Integer> min = new Stack<Integer>();    public void push(int x) {        if(min.isEmpty() || x <= min.peek()){            min.push(x);        }        stack.push(x);    }    public void pop() {        if(stack == null){            return;        }        if(min.peek().equals(stack.peek())){            min.pop();        }        stack.pop();    }    public int top() {        return stack.peek();    }    public int getMin() {       return min.peek();    }}
0 0
原创粉丝点击