题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
Java解答
import java.util.Stack;
public class Solution {
Stack<Integer> s = new Stack<Integer>();
Integer min = null;
Integer max = null;
public void push(int node) {
if(min == null || min > node){
min = node;
}
if(max == null || max < node){
max = node;
}
s.push(node);
}
public void pop() {
s.pop();
Integer minNow = null;
Integer maxNow = null;
for(int i = 0; i < s.size(); i++){
int node = s.get(i);
if(minNow == null || minNow > node){
minNow = node;
}
if(maxNow == null || maxNow < node){
maxNow = node;
}
}
min = minNow;
max = maxNow;
}
public int top() {
return max;
}
public int min() {
return min;
}
}