定义栈数据结构
1. 使用辅助栈存最小值
2. 入栈时检查元素是否为最小值,若是则压入主栈和辅助栈
3. 出栈时检查主栈栈顶元素是否与辅助栈一致,若是则一起弹出
// 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
let stack1 = [],stack2 = [];
function push(value) {
if(value <= Math.min(...stack1) || stack1.length === 0){
stack1.unshift(value);
stack2.unshift(value);
}else{
stack1.unshift(value)
}
}
function pop() {
if(stack1.length > 0) {
if (stack1[0] === stack2[0]) {
stack1.shift();
stack2.shift();
} else {
stack1.shift();
}
}
}
function top() {
if(stack1.length > 0) {
return stack1[0];
}
}
function min() {
if(stack2.length > 0) {
return stack2[0];
}
}
最后更新于