题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
代码
一个栈是原始栈,另外一个是记录每一时刻原始栈最小值的栈。
import java.util.Stack;
public class Solution {
//注意本题求的是某时刻栈内最小的元素
//eg.进栈顺序为456123,min值就是444111
Stack<Integer> data=new Stack<Integer>();
Stack<Integer> mindata=new Stack<Integer>();
//入栈
public void push(int node) {
data.push(node);
if(mindata.isEmpty()){
mindata.push(node);
}else{
if(node<=mindata.peek()){
mindata.push(node);
}else{
mindata.push(mindata.peek());
}
}
}
//出栈
public void pop() {
data.pop();
mindata.pop();
}
//获取栈顶的值
public int top() {
return data.peek();
}
public int min() {
return mindata.peek();
}
}