劍指Offer 9 用兩個棧實現佇列

2021-10-09 10:40:32 字數 476 閱讀 2070

準備兩個棧, 稱為a和b, 加元素的時候加進a, 刪除元素時要考慮情況

假如a中已經有了幾個元素, 而b中沒有元素

此時想要刪除元素並且滿足佇列的特性, 只需要把a中的元素逐個彈出壓入到bb.push(a.pop()), 直到a為空

此時b中元素的順序和之前的a就是反過來的, 此時彈出b的元素即可

如果要刪除資料時, b中仍有元素, 也是直接彈出b的元素, 在b中的元素肯定比在a中的"先", 而b中元素是經過之前的a"反轉"的, 所以棧頂元素即是所謂的"隊首"

class

cqueue

public

void

(int value)

public

intdeletehead()

}if(b.empty()

)return b.

pop();

}}

劍指offer(9) 用兩個棧實現佇列

首先佇列是 先進先出 原則,棧是 先進後出 的原則 接下來設計兩個棧,分為別positive和negative 當最初有元素要入佇列的時候,我們讓其進入positive棧中 如果需要出佇列了,那麼我們可以採取將positive中除了最底層的所有元素依次pop出來放進negative中 然後再將pos...

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

用兩個棧實現乙個佇列。佇列的宣告如下,尾部插入整數和在佇列頭部刪除整數的功能。若佇列中沒有元素,deletehead 操作返回 1 leetcode 示例 1 輸入 3 輸出 null,null,3,1 示例 2 輸入 5 2 輸出 null,1,null,null,5,2 題目理解 輸入 cque...

劍指 9 用兩個棧實現佇列

題目描述 演算法分析 stack1只用來插入元素,stack2只用來刪除元素 每次刪除元素時,若stack2為空,則將stack1中所有元素依次壓入stack2中 否則,直接從stack2中刪除站頂元素。提交 class solution int pop result stack2.top stac...