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 }

 

posted @ 2020-09-03 20:28  yooK6  阅读(212)  评论(0)    收藏  举报