題目
定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的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]
}