题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
/**
1. 维护两个栈,originStack 负责存放真实数据,minStack负责存放最小值
2. minStack总会拿最顶上元素与即将push的元素比较最小值,哪个小哪个push
3. 直接从minStack获取,时间复杂度O1
*/
let originStack = []
let minStack = []
function push(node)
{
originStack.push(node)
if(minStack.length){
const minTop = minStack[minStack.length - 1]
minStack.push(minTop > node ? node : minTop)
}else{
minStack.push(node)
}
}
function pop()
{
minStack.pop()
return originStack.pop()
}
function top()
{
return originStack[originStack.length - 1]
}
function min()
{
return minStack[minStack.length - 1]
}
module.exports = {
push : push,
pop : pop,
top : top,
min : min
};
