定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路:用ArrayList实现
public class Solution {
public static void main(String[] args) {
Solution s = new Solution();
s.push(2);
s.push(3);
s.push(0);
System.out.println(s.min);
}
ArrayList<Integer> list1 = new ArrayList<>();
int min;
public void push(int node) { // 入栈
if (list1.size() == 0) {
min = node;
} else {
if (node < min) {
min = node;
}
}
list1.add(node);
}
public void pop() { // 出栈
if (!list1.isEmpty()) {
if (min == list1.size() - 1) {
int t = 0;
for (int i = 1; i < list1.size() - 1; i++) {
t = list1.get(0);
if (t > list1.get(i)) {
t = list1.get(i);
}
}
min = t;
}
list1.remove(list1.size() - 1);
} else {
return;
}
}
public int top() {
Integer node = list1.get(list1.size() - 1);
return node;
}
public int min() {
return min;
}
}