示例 1:
輸入:示例 2:[,[3],,]
輸出:[null,null,3,-1]
輸入:思路:新鍵兩個棧,棧1放元素,棧2為中轉。當需要輸出對頭時,我們只需要將第乙個棧的元素放去棧2,然後輸出棧頂元素。[,,[5],[2],,]
輸出:[null,-1,null,null,5,2]
當取出隊頭後,棧2並不需要清除,只需要放在那裡就好,因為棧2的佇列取出順序是對的,如果新元素來了只需要放棧1即可,當棧2為空之後。再將棧1元素放進棧2,再取隊頭,如此重複。
**實現:
class
cqueue
void
(int value)
intdeletehead()
while
(stk.
size()
)if(cache.
empty()
)return-1
;int x = cache.
top();
cache.
pop();
return x;}}
;/**
* your cqueue object will be instantiated and called as such:
* cqueue* obj = new cqueue();
* int param_2 = obj->deletehead();
*/
劍指offer 6 用兩個棧實現佇列
劍指offer 6.用兩個棧實現佇列 題目 思路 push的時候很容易 pop的時候需要保證能夠先進先出,因為stack本身是先進後出的,所以需要兩個stack導一下 複雜度pop一次需要o n 啟發或者坑 大概是溫習了stack的functions吧!class solution int pop ...
劍指Offer刷題 用兩個棧實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。本題要求用兩個棧實現佇列的入隊和出隊操作。入隊 由於棧是後進先出,佇列是先進先出。所以當兩個棧堆疊起來時,就能實現先進先出。只需要把資料放入到stack1中,然後再順序輸出放入到stack2中,但由於需要考慮到連續進入...
劍指offer 用兩個棧實現佇列
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...