问题来源:https://leetcode.com/problems/min-stack/
import java.util.Iterator;
import java.util.Stack;
/**
*
* <p>
* ClassName MinStack
* </p>
* <p>
* Description 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.
* </p>
*
* @author TKPad wangx89@126.com
* <p>
* Date 2015年3月26日 下午6:12:45
* </p>
* @version V1.0.0
*
*/
public class MinStack {
Stack<Integer> stack = new Stack<Integer>();
int minValue = Integer.MAX_VALUE;
public void push(int x) {
if (x < minValue) {
minValue = x;
}
stack.push(x);
}
public void pop() {
if (!stack.isEmpty())
stack.pop();
}
public int top() {
if (!stack.isEmpty())
return stack.peek();
return -1;
}
public int getMin() {
if (stack.contains(minValue)) {
return minValue;
} else {
minValue = stack.peek();
Iterator<Integer> iterator = stack.iterator();
while (iterator.hasNext()) {
Integer next = iterator.next();
if (next < minValue) {
minValue = next;
}
}
return minValue;
}
}
public static void main(String[] args) {
MinStack minStack = new MinStack();
minStack.push(2);
minStack.push(0);
minStack.push(3);
minStack.push(0);
System.out.println(minStack.getMin());
minStack.pop();
System.out.println(minStack.getMin());
minStack.pop();
System.out.println(minStack.getMin());
minStack.pop();
System.out.println(minStack.getMin());
}
}
原文:http://blog.csdn.net/shijiebei2009/article/details/44654941