劍指 Offer 棧與佇列
阿新 • • 發佈:2022-04-13
09. 用兩個棧實現佇列
沒啥意思 不要想複雜了 就是暴力
class CQueue { public: CQueue() { } /* 一個主棧 一個快取棧 來回導 得到隊頭 copy後一端變空了 */ stack<int>stk,cache; void copy(stack<int>&a,stack<int>&b){ while(a.size()){ b.push(a.top()); a.pop(); } } void appendTail(int value) { stk.push(value); } int deleteHead() { if(stk.empty())return -1; copy(stk,cache); int res=cache.top(); cache.pop(); copy(cache,stk); return res; } };
30. 包含min函式的棧
class MinStack { public: /** initialize your data structure here. */ MinStack() { } stack<int>stk,minn; void push(int x) { stk.push(x); if(minn.empty()||minn.top()>=x)minn.push(x); } void pop() { if(stk.top()==minn.top())minn.pop(); stk.pop(); } int top() { return stk.top(); } int min() { return minn.top(); } };