Stack
【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
【要求】1.pop,push,getMin的操作时间都是O(1)
2.设计的栈的类型可以使用现成的栈结构。
Stack:
Stack.push(int n):一个元素入栈,返回值为空
Stack.pop();删除并返回栈顶元素
Stack.peek():返回栈顶元素但不删除
Stack.isEmpty():返回类型为布尔型,判断栈是否为空。if(Stack.isEmpty())
1 package STACK; 2 3 import java.util.Stack; 4 5 //在pop()和GetMin()中,应该先判空,再有下面的操作。 6 7 public class getMin0903 { 8 Stack<Integer> dataStack; 9 Stack<Integer> minStack; 10 11 //构造函数 12 public getMin0903(){ 13 dataStack=new Stack<>(); 14 minStack = new Stack<>(); 15 } 16 17 public void push(int num){ 18 dataStack.push(num); 19 if(minStack.isEmpty()){ 20 minStack.push(num); 21 } 22 else if(num<minStack.peek()){ 23 minStack.push(num); 24 } 25 else minStack.push(minStack.peek()); 26 } 27 28 public int pop(){ 29 if(dataStack.isEmpty()){ 30 throw new RuntimeException("Empty Stack"); 31 } 32 int a=dataStack.pop(); 33 minStack.pop(); 34 return a; 35 } 36 37 public int GetMin(){ 38 if(dataStack.isEmpty()){ 39 throw new RuntimeException("Empty Stack"); 40 } 41 return minStack.peek(); 42 } 43 44 }
浙公网安备 33010602011771号