面試題9 用兩個棧實現佇列

2021-10-11 02:19:00 字數 910 閱讀 1016

棧:後進先出

佇列:先進先出

我的解法

用時擊敗29%

記憶體擊敗34%

效率依舊不是很高,主要問題在deletehead()判斷太多了

class

cqueue

public

void

(int value)

public

intdeletehead()

else

return stack2.

pop();

}}else}}

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

* cqueue obj = new cqueue();

* int param_2 = obj.deletehead();

*/

力扣官方

用時擊敗43%

記憶體擊敗34

有一些進步,好像都沒有出現100%的寫法

class

cqueue

public

void

(int value)

public

intdeletehead()

}// 通過之前stack1彈棧,再次判斷stack2是否有元素

if(stack2.

isempty()

)else}}

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

* cqueue obj = new cqueue();

* int param_2 = obj.deletehead();

*/

面試題9 用兩個棧實現佇列

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別 棧是保證元素後進先出,佇列保證元素先進先出,它們都只有到來先後順序 題目思路 需要用兩個棧來實現乙個佇列,乙個棧a是先進後出,將棧a中出的元素存放在棧b中,負負得正,實現佇列的先進先出功能。存入時,存在棧a,...

面試題9 用兩個棧實現佇列

二 關鍵 1.關於佇列的插入和刪除 只在stack1中插入,只在stack2中刪除。2.關於倒水操作 只在stack2為空時,把stack1中元素彈出壓倒stack2中。其他情況不進行倒水的操作。三 解釋 刪除乙個元素的步驟 當stack2不是空的時候,直接彈出stack2棧頂元素 當stack2是...

面試題9 用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。入隊 將元素進棧stack1 出隊 判斷棧stack2是否為空,如果為空,則將棧stack1中所有元素彈出pop,並push進stack2,stack2出棧 如果不為空,棧stack2直接出棧。即 棧a用來作入佇列 棧...