在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO

Posted lihuazhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO相关的知识,希望对你有一定的参考价值。

思路:

  准备两个栈 stackData stackMin

 1 package my_basic;
 2 
 3 import java.util.Stack;
 4 
 5 public class GetMinStack {
 6     Stack<Integer> stackData = new Stack<Integer>();
 7     Stack<Integer> stackMin = new Stack<Integer>();
 8     
 9     public void push(int pushInt) {
10         if (stackMin.empty()) {
11             stackMin.push(pushInt);
12         }else if (pushInt < stackMin.peek()) {
13             stackMin.push(pushInt);
14         }else {
15             stackMin.push(stackMin.peek());
16         }
17         stackData.push(pushInt);
18     }
19     
20     public int pop() {
21         if (stackData.empty()) {
22             throw new RuntimeException("stack is empty!");
23         }
24         stackMin.pop();
25         return stackData.pop();
26     }
27     
28     public int getMin() {
29         if (stackData.empty()) {
30             throw new RuntimeException("stack is empty!");
31         }
32         return stackMin.peek();
33     }
34     
35     public static void main(String[] args) {
36         GetMinStack s = new GetMinStack();
37         s.push(6);
38         s.push(5);
39         s.push(2);
40         
41         int res = s.getMin();
42         System.out.println(res);
43         
44         s.push(7);
45         
46         res =  s.getMin();
47         System.out.println(res);
48         
49         s.pop();
50         s.pop();
51         
52         res =  s.getMin();
53         System.out.println(res);
54     }
55     
56 }

 

以上是关于在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO的主要内容,如果未能解决你的问题,请参考以下文章

左神算法之获取栈中最小值

设计一个有getMin功能的栈

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作

算法题1-设计一个有getMin功能的栈

O时间复杂度实现入栈出栈获得栈中最小元素获得栈中最大元素(转)

设计一个有getMin功能的栈