416,劍指 Offer 用兩個棧實現佇列

2021-10-09 14:28:38 字數 855 閱讀 1557

示例 1:

輸入

[,[3],,]

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

示例 2:

輸入

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

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

問題分析做這題之前我們首先要明白一點就是,棧是先進後出的,佇列是先進先出的。我們可以使用兩個棧stackpop和stackpush,往佇列中新增元素的時候直接把要新增的值壓入到stackpush棧中。往佇列中刪除元素的時候如果stackpop中有元素我們就直接刪除,如果沒有元素,我們需要把stackpush中的元素全部出棧放到stackpop中,然後再刪除stackpop中的元素。這樣做的目的我們就可以保證stackpop中的元素永遠都是比stackpush中的元素更老。

class

cqueue

public

void

(int value)

public

intdeletehead()

}

總結用棧實現佇列也是比較常見的一道題,類似的還有用佇列實現棧。

416,劍指 Offer 用兩個棧實現佇列

示例 1 輸入 3 輸出 null,null,3,1 示例 2 輸入 5 2 輸出 null,1,null,null,5,2 問題分析做這題之前我們首先要明白一點就是,棧是先進後出的,佇列是先進先出的。我們可以使用兩個棧stackpop和stackpush,往佇列中新增元素的時候直接把要新增的值壓入...

劍指offer 用兩個棧實現佇列

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...

用兩個棧實現佇列《劍指offer

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊 1 使用stack容器定義兩個棧 stack stack1 stack stack2 2 入隊 stack1.push node node為入隊元素 ...