[討論] 用兩個 Stack 來實作一個 Queue

作者: Jruffian   2015-12-22 02:49:30
大家好,最近再寫LeetCode,
遇到了這題 "用兩個Stack來實作一個Queue"
我的想法是 Queue 是 FIFO的概念,
使用lisked list和兩個headPtr及TailPtr分別鎖住頭跟尾
push就加到尾端,pop就從頭搬出。
就可以簡單的完成queue,
那想請問的是這題目"用兩個Stack來實作一個Queue"
需要用到兩個stack的主要用意是甚麼?
有甚麼樣的應用會使用到類似的方法。
順便想問大家,
做了leetcode的題目,挫折感好高
連easy的題目有時候都做不出來,需要要參考其他人的作法
但網路上的神人都超強的,代碼一個比一個精簡,
想請問這樣的功力是天生的還是經驗累積?
大家都會參考別人的作法再變成自己的東西,
如果是天生的,是不是趕快轉行比較快?
謝謝大家
作者: fatrabitree (胖兔子)   2015-12-22 03:03:00
就是純練習基礎先打一下再去刷leetcode,至少資結跟演算法要看這樣至少會做easy 其他就靠經驗
作者: Jruffian   2015-12-22 04:07:00
謝謝F大的意見
作者: testPtt (測試)   2015-12-22 08:15:00
要out的時候放到另一個stack再放回去準備in通常做這種無聊事很偏硬體 可能是記憶體不配位址之類的
作者: andrenvq57 (喂!威,喂?)   2015-12-22 14:31:00
push all elements into s1, while s1 not empty: pops1, push into s2 這樣就反過來了pop queue: pop s2. push queue: pop all from s2, push all to s1, push new element to s1, pop all froms1, push all to s2
作者: HolyBugTw (HolyBug)   2015-12-22 15:35:00
兩個杯子倒來倒去,人生能用上的話就有用(用的上嗎?)
作者: stupid0319 (徵女友)   2015-12-22 17:39:00
用多個Stack來做Queue也是很常見啊,但不是刻意就是了

Links booklink

Contact Us: admin [ a t ] ucptt.com