題目描述
用兩個棧來實現乙個佇列。
有兩個棧,棧的特點是,元素先進後出,佇列的特點是,先進先出。
所以進棧的那個不能用來出,得換乙個棧,得出,兩次先進後出後,就會得到進來時後得順序了。
所以,當push 時: 加入用棧1來進入資料
當pop 彈出資料時候,分情況了:
如果此時棧2為空,就將所有的棧1中的元素壓進來,此時就是他們進來的順序,再乙個乙個彈出,當棧2不為空時,直接彈就行。直到為空了。
**實現
void
push
(int node)
intpop()
}
res=stack1.
top();
stack1.
pop();
return res ;
//棧的彈出有值,這是再牛客網上的題目
}
劍指offer 6 用兩個棧實現佇列
劍指offer 6.用兩個棧實現佇列 題目 思路 push的時候很容易 pop的時候需要保證能夠先進先出,因為stack本身是先進後出的,所以需要兩個stack導一下 複雜度pop一次需要o n 啟發或者坑 大概是溫習了stack的functions吧!class solution int pop ...
劍指Offer 6 用兩個棧來實現乙個佇列。
題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。棧 stack 先進後出 不允許遍歷 佇列 queue 先進先出 不允許遍歷 劍指offer思路 建立兩個棧stack1和stack2,使用兩個 先進後出 的棧實現乙個 先進先出 的佇列。我們通過乙個具體的例...
劍指Offer 6 替換空格
題目 思路 我們首先想到的就是從前往後掃瞄,如果空格,就替換為 20,但是這樣需要移動空格後的元素。我們還有一種方法,首先遍歷一遍字串,統計出空格的個數,並可以由此計算出替換之後的字串的長度。每替換乙個空格,長度增加2,因此替換之後的字串長度等於原來的長度加上2乘以空格的個數。即 替換後的字串的長度...