题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。
构建一个数据结构,包含数据栈和辅助栈。数据栈存取数据,而辅助栈则存取最小值元素。每一次,数据栈push和pop操作,辅助栈也跟着push和pop操作,保存当前最小值元素。
代码实现:
import java.util.Stack; import java.util.EmptyStackException; public class Solution{ Stack<Integer> dataStack=new Stack<Integer>(); Stack<Integer> minStack=new Stack<Integer>(); public void push(int value){ if(minStack.empty()||value<minStack.peek()){ minStack.push(value); }else{ minStack.push(minStack.peek()); } dataStack.push(value); } public int pop(){ if(dataStack.empty()){ throw new EmptyStackException(); } minStack.pop(); return dataStack.pop(); } public int min(){ if(dataStack.empty()){ throw new EmptyStackException(); } return minStack.peek(); } public static void main(String[] args){ MinStack min=new MinStack(); //min.pop(); min.push(1); min.push(2); min.push(0); min.push(1); min.push(3); System.out.println(min.min()); min.pop(); System.out.println(min.min()); min.pop(); System.out.println(min.min()); min.pop(); System.out.println(min.min()); min.pop(); System.out.println(min.min()); min.pop(); System.out.println(min.min()); } }
posted on
浙公网安备 33010602011771号