【剑指offer】13.包含min函数的栈

10次阅读

共计 539 个字符,预计需要花费 2 分钟才能阅读完成。

题目
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数(时间复杂度应为 O(1))。
思路
1. 定义两个栈,一个栈用于存储数据,另一个栈用于存储每次数据进栈时栈的最小值.
2. 每次数据进栈时,将此数据和最小值栈的栈顶元素比较,将二者比较的较小值再次存入最小值栈.
4. 数据栈出栈,最小值栈也出栈。
3. 这样最小值栈的栈顶永远是当前栈的最小值。
代码
var dataStack = [];
var minStack = [];

function push(node)
{
dataStack.push(node);
if(minStack.length === 0 || node < min()){
minStack.push(node);
}else{
minStack.push(min());
}
}
function pop()
{
minStack.pop();
return dataStack.pop();
}
function top()
{
var length = dataStack.length;
return length>0&&dataStack[length-1]
}
function min()
{
var length = minStack.length;
return length>0&&minStack[length-1]
}

正文完
 0