Java [Leetcode 155]Min Stack

题目描述:

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.

解题思路:

主要是怎么保存最小值这个问题,每次在向栈中添加数据时,总是和当前的最小值比较,如果比当前的最小值小,那么则把当前的最小值压入栈中,表明当前栈中的最小值为当前最小值,然后再把新的数据压入栈中。每次弹出栈顶的元素时候,将弹出的数据与当前的最小值比较,如果相等,表明已经达到当前最小值所在的位置,下面的那个数是当前栈中的最小值,将其弹出,其值为新的最小值。

代码如下:

class MinStack {
    
	Stack<Integer> stack = new Stack<Integer>();
	int min = Integer.MAX_VALUE;
	
    public void push(int x) {
    	if(x <= min){
    		stack.push(min);
    		min = x;
    	}
    	stack.push(x);
    }    

    public void pop() {
    	int peek = stack.pop();
    	if(peek == min)
    		min = stack.pop();
    }

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

    public int getMin() {
        return min;
    }
}

  

posted @ 2016-02-22 10:42  scottwang  阅读(739)  评论(0编辑  收藏  举报