LeetCode 用兩個棧實現佇列

2021-10-24 00:16:01 字數 747 閱讀 1371

部落格說明

介紹劍指 offer 09. 用兩個棧實現佇列 題目

示例 1:

輸入:

[,[3],,]

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

示例 2:
輸入:

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

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

1 <= values <= 10000
思路

根據棧先進後出的特性,我們每次往第乙個棧裡插入元素後,第乙個棧的底部元素是最後插入的元素,第乙個棧的頂部元素是下乙個待刪除的元素。為了維護佇列先進先出的特性,我們引入第二個棧,用第二個棧維護待刪除的元素,在執行刪除操作的時候我們首先看下第二個棧是否為空。如果為空,我們將第乙個棧裡的元素乙個個彈出插入到第二個棧裡,這樣第二個棧裡元素的順序就是待刪除的元素的順序,要執行刪除操作的時候我們直接彈出第二個棧的元素返回即可

**

class cqueue 

stack1.push(value);

}public int deletehead()

return stack2.isempty() ? -1 : stack2.pop();

}else

}}

感謝

leetcode

以及勤勞的自己

用兩個棧實現佇列(leetcode)

思路 因為棧只能使用push 和pop 方法。所以使用乙個棧作為佇列,另乙個作為輔助棧。佇列負責儲存元素,輔助棧用於在需要刪除佇列中元素時,將佇列中元素按照倒序存入輔助棧中,進行pop 方法,實現佇列的 先進先出 10 32 varcqueue function param value return...

leetcode 用兩個棧實現佇列

示例 1 示例 2 1.棧的特點 棧只能在棧頂進行入棧和出棧操作,同時遵循 先入後出 原則。2.佇列的特點 佇列的一端用於入隊 另一端用於出隊 遵循 先進先出 3.用棧實現佇列的思路分析 兩個棧模擬實現乙個佇列,其中乙個棧用於入隊操作,另乙個棧用於出隊操作。支援動態增長的棧 typedef int ...

用兩個棧實現佇列 用兩個佇列實現棧

劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...