準備兩個棧, 稱為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...