设计一个有getMin功能的栈
【题目】实现一个特殊的栈,在实现栈的基本功能基础上,再实现返回栈中最小元素的操作。
【要求】
-
pop、push、geMin操作的时间复杂度都是O(1)。
-
设计的栈类型可以使用现成的栈结构。
public class MyStack { private Stack<Integer> stackData; private Stack<Integer> stackMin; public MyStack() { stackData = new Stack<Integer>(); stackMin = new Stack<Integer>(); } public void push(int num) { if (this.stackMin.isEmpty()) { this.stackMin.push(num); } else if (num < this.getMin()) { this.stackMin.push(num); } else { this.stackMin.push(this.stackMin.peek()); } this.stackData.push(num); } public int pop() { if (this.stackData.isEmpty()) { new RuntimeException("Your stack is empty~"); } this.stackMin.pop(); return this.stackData.pop(); } public int getMin() { if (this.stackMin.isEmpty()) { new RuntimeException("Your stack is empty~"); } return this.stackMin.peek(); } }