劍指offer 面試題30 包含min函式的棧

2021-10-04 04:24:36 字數 430 閱讀 8310

問題:定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。

注意:保證測試中不會當棧為空的時候,對棧呼叫pop()或者min()或者top()方法。

輸入:類

輸出:類中的成員函式實現

思路:設計乙個輔助棧,入棧時,將數與輔助棧的棧頂數字相比較,如果數大於棧頂數,則儲存棧頂數字到輔助棧。否則,將數儲存於輔助棧,同時更新最小值。

**:

class solution 

else if(value>minstack.top())

else

}void pop()

else

}int top()

int min()

};

複雜度分析:時間複雜度為o(1).空間複雜度為o(n).

劍指Offer面試題30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 解題思路 剛開始看到這個題還以為是要自己實現棧的底層資料結構,原來是借助stack棧的資料結構設計演算法即可,一般筆試題也不會考寫底層實現,倒是面試的時候有可能會考實現底層資料結構,如實現string類...

劍指offer面試題30 包含min函式的棧

思路 在棧的結構裡面不能實現排序,所以排序的方法行不通。這裡的思路還是挺巧妙的,就是建立乙個輔助棧,裡面存放的第乙個元素就是棧的最小值,具體怎麼實現可以看下面這個 以後要把建立輔助空間來解決問題當做一種常見的思路進行考慮,特別是遇到佇列 棧結構的問題的時候要嘗試著這種思路。templatevoid ...

劍指Offer學習 面試題30 包含min函式的棧

包含min函式的棧 class minstack 新增乙個元素 min棧永遠儲存最小的元素,當新增的元素比min棧棧頂的元素小時,則入棧,否則在新增一次min棧中棧頂的值 param val public void push int val data stack.push val min stack...