標籤:

包含min函數的棧

包含min函數的棧

定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的min函數。在該棧中,調用min push pop的時間複雜度都是o(1)

思路:定義一個數據棧和一個輔助棧,數據棧正常進行push pop操作的時候,

輔助棧觀察棧頂元素與當前元素的大小,存小的,即使自身小也存。

參考代碼:

#include <iostream>#include <stack>using namespace std;stack<int> data;stack<int> aid;void mypush(int num){ data.push(num); if(aid.size() == 0 || num < aid.top()) aid.push(num); else aid.push(aid.top());}void mypop(){ data.pop(); aid.pop();}int mymin(){ return aid.top();}int main(){ for(int i = 0;i < 10;i++) mypush(i); int min = mymin(); cout << min <<endl; return 0;}

推薦閱讀:

二維數組中的查找
反轉鏈表
刪除鏈表的節點
合併兩個排序的鏈表

TAG:演算法 | 筆試 |