【劍指offer】13.包含min函數的棧

題目

定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的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]
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章