劍指offer第6題 用兩個棧實現佇列

2021-10-12 17:41:49 字數 930 閱讀 5767

示例 1:

輸入:

[,[3],,]

輸出:[null,null,3,-1]

示例 2:

輸入:

[,,[5],[2],,]

輸出:[null,-1,null,null,5,2]

思路:新鍵兩個棧,棧1放元素,棧2為中轉。當需要輸出對頭時,我們只需要將第乙個棧的元素放去棧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型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...