包含min函数的栈

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
 
 1 import java.util.*;
 2 
 3 public class Solution {
 4 
 5     ArrayList<Integer> s;
 6     Stack<Integer> s_min;
 7     public Solution() {
 8         s = new ArrayList<>();
 9         s_min = new Stack<>();
10     }
11     public void push(int node) {
12         if (s.size() == 0) {
13             s.add(node);
14             s_min.push(node);
15         } else {
16             if (node > s_min.peek()) {
17                 s_min.push(s_min.peek());
18             } else {
19                 s_min.push(node);
20             }
21             s.add(node);
22             
23         }
24         
25         
26         
27     }
28     
29     public void pop() {
30         if (s.size() != 0) {
31             s.remove(s.size() - 1);
32             s_min.pop();
33         }
34     }
35     
36     public int top() {
37         if (s.size() != 0) {
38             return s.get(0);
39         }
40         return -1;
41     }
42     
43     public int min() {
44         if (s.size() != 0) {
45             return s_min.peek();
46         }
47         return -1;
48     }
49 }

 

posted @ 2020-02-20 16:39  hyx1  阅读(81)  评论(0编辑  收藏  举报