《剑指offer》刷题笔记。如有更好解法,欢迎留言。
关键字:栈
辅助栈
题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路:
- 添加辅助栈minStack
- 在向stack入栈时,如果minStack为空,同步入栈。
- 如果minStack不为空,判断当前元素与minStack的栈顶(也就是minStack的最小值)的大小关系,如果更小,则入栈。
- min函数要获得stack中的最小值,其实就对应了minStack的栈顶。
- 完整代码
let stack = [];
let minStack = [];
function push(node)
{
stack.push(node);
if(minStack.length === 0){
minStack.push(node);
}else{
if(node < minStack[minStack.length-1]){
minStack.push(node);
}
}
}
function pop()
{
let min = minStack[minStack.length-1];
let cur = stack[stack.length-1];
if(cur === min){
minStack.pop();
stack.pop();
}else{
stack.pop();
}
}
function min()
{
return minStack[minStack.length-1];
}
网友评论