参考链接
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
解题思路
- 引入辅助栈,空间换时间
- minStack和dataStack元素个数相同,其中minStack栈顶始终为最小值
代码实现
let dataStack=[];
let minStack=[];
function push(node)
{
// write code here
if(minStack.length===0 || minStack[minStack.length-1]>=node){
minStack.push(node);
}else{
minStack.push(minStack[minStack.length-1])
}
dataStack.push(node);
}
function pop()
{
// write code here
if(dataStack.length===0 || minStack.length===0){
return;
}
dataStack.pop();
minStack.pop();
}
function top()
{
// write code here
if(dataStack.length>0){
return dataStack[dataStack.length-1];
}
return 0;
}
function min()
{
// write code here
if(minStack.length>0){
return minStack[minStack.length-1];
}
return 0;
}