时间限制:1秒 空间限制:32768K 热度指数:226639
本题知识点: 栈
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
时间复杂度为o(1),故不能使用遍历寻找最小值的办法了。
因此,应该有一个立取结构的存值空间,且该空间必须与栈内数值保持同步,如果栈内数弹出了,它必须实施更新最小值。
这就涉及到了在数值一个一个压入栈时对每个状态存取最小值的问题
Stack<Integer> stack_data= new Stack<>();
Stack<Integer> stack_min= new Stack<>();
public void push(int node) {
stack_data.push(node);
if(stack_min.isEmpty() || node< stack_min.peek()){
stack_min.push(node);
}else{
stack_min.push(stack_min.peek());
}
}
public void pop() {
if(!stack_data.isEmpty()&& !stack_min.isEmpty()){
stack_data.pop();
stack_min.pop();
}
}
public int top() {
return stack_data.peek();
}
public int min() {
if(!stack_min.isEmpty())
return stack_min.peek();
return 65535;
}