包含min函數的棧
02-12
包含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;}
推薦閱讀: