力扣 225題用佇列實現棧

2021-10-08 13:33:33 字數 1624 閱讀 6425

使用佇列實現棧的下列操作:

push(x) -- 元素 x 入棧

pop() -- 移除棧頂元素

top() -- 獲取棧頂元素

empty() -- 返回棧是否為空

注意:你只能使用佇列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 這些操作是合法的。

你所使用的語言也許不支援佇列。 你可以使用 list 或者 deque(雙端佇列)來模擬乙個佇列 , 只要是標準的佇列操作即可。

你可以假設所有操作都是有效的(例如, 對乙個空的棧不會呼叫 pop 或者 top 操作)。

/** * your mystack object will be instantiated and called as such:

* mystack obj = new mystack();

* obj.push(x);

* int param_2 = obj.pop();

* int param_3 = obj.top();

* boolean param_4 = obj.empty();

*/

由於佇列是先進先出,所以佇列的 隊尾既是棧的棧頂,所以每次要 彈出的棧頂 是我們 佇列的隊尾

我們只需要有乙個輔助佇列,每次獲取棧頂的時候將佇列除隊尾的元素轉移到另乙個佇列上,取出隊尾

便於理解與實現,將每次只保留乙個`有值`的插入佇列(),另乙個`為空`的輔助彈出佇列

public

class

lk225

/** 只在新增佇列中加入元素*/

public

void

push

(int x)

/**時刻保持乙個隊列為空的狀態,在獲取棧頂元素時,將除隊尾元素全轉移到空佇列中,最後彈出該元素,又形成乙個空佇列等待下次彈出使用 */

public

intpop()

/** * 讀取的時候依舊執行彈出操作,不過要將該值加入另乙個輔助佇列中

* */

public

inttop()

return result;

}/** returns whether the stack is empty. */

public

boolean

empty()

/** 彈出/檢視元素的時候要轉移清空乙個佇列 */

力扣 225 用佇列實現棧

一 題目描述 使用佇列實現棧的下列操作 注意 二 解題思路 建立兩個佇列a和b。入棧 將新元素直接入a佇列即可。出棧 將a中的元素轉到b中,當a中只有乙個元素時,出隊即可。然後交換a和b的身份。取棧頂元素 將a中的元素轉到b中,當a中只有乙個元素時,取出最後乙個元素出隊,然後將其入b佇列。然後交換a...

力扣簡單專欄 225 用佇列實現棧(雙解法)

請你僅使用兩個佇列實現乙個 先出 lifo 的棧,並支援普通佇列的全部四種操作 push top pop 和 empty 實現 mystack 類 void push int x 將元素 x 壓入棧頂。int pop 移除並返回棧頂元素。int top 返回棧頂元素。boolean empty 如果...

力扣232號題 用棧實現佇列

push x 將乙個元素放入佇列的尾部。pop 從佇列首部移除元素。peek 返回佇列首部的元素。empty 返回佇列是否為空。myqueue queue new myqueue queue.push 1 queue.push 2 queue.peek 返回 1 queue.pop 返回 1 que...