Java [Leetcode 155]Min Stack

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
}

  

以上是关于Java [Leetcode 155]Min Stack的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-155 Min Stack Solution (with Java)

LeetCode155-最小栈(优先队列/巧妙的解法)

最小栈(leetcode 155)

最小栈(leetcode 155)

#Leetcode# 155. Min Stack

Leetcode 155. Min Stack