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

看板C_and_CPP作者時間8年前 (2015/12/22 02:49), 8年前編輯推噓2(2011)
留言13則, 6人參與, 最新討論串1/1
大家好,最近再寫LeetCode, 遇到了這題 "用兩個Stack來實作一個Queue" 我的想法是 Queue 是 FIFO的概念, 使用lisked list和兩個headPtr及TailPtr分別鎖住頭跟尾 push就加到尾端,pop就從頭搬出。 就可以簡單的完成queue, 那想請問的是這題目"用兩個Stack來實作一個Queue" 需要用到兩個stack的主要用意是甚麼? 有甚麼樣的應用會使用到類似的方法。 順便想問大家, 做了leetcode的題目,挫折感好高 連easy的題目有時候都做不出來,需要要參考其他人的作法 但網路上的神人都超強的,代碼一個比一個精簡, 想請問這樣的功力是天生的還是經驗累積? 大家都會參考別人的作法再變成自己的東西, 如果是天生的,是不是趕快轉行比較快? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.146.193 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450723773.A.C05.html

12/22 03:03, , 1F
就是純練習
12/22 03:03, 1F
※ 編輯: Jruffian (1.171.146.193), 12/22/2015 03:15:48

12/22 03:27, , 2F
基礎先打一下再去刷leetcode,至少資結跟演算法要看
12/22 03:27, 2F

12/22 03:28, , 3F
這樣至少會做easy 其他就靠經驗
12/22 03:28, 3F

12/22 04:07, , 4F
謝謝F大的意見
12/22 04:07, 4F

12/22 08:15, , 5F
要out的時候放到另一個stack再放回去準備in
12/22 08:15, 5F

12/22 08:22, , 6F
通常做這種無聊事很偏硬體 可能是記憶體不配位址之類的
12/22 08:22, 6F

12/22 14:31, , 7F
push all elements into s1, while s1 not empty: pop
12/22 14:31, 7F

12/22 14:32, , 8F
s1, push into s2 這樣就反過來了
12/22 14:32, 8F

12/22 14:35, , 9F
pop queue: pop s2. push queue: pop all from s2, pu
12/22 14:35, 9F

12/22 14:35, , 10F
sh all to s1, push new element to s1, pop all from
12/22 14:35, 10F

12/22 14:35, , 11F
s1, push all to s2
12/22 14:35, 11F

12/22 15:35, , 12F
兩個杯子倒來倒去,人生能用上的話就有用(用的上嗎?)
12/22 15:35, 12F

12/22 17:39, , 13F
用多個Stack來做Queue也是很常見啊,但不是刻意就是了
12/22 17:39, 13F
文章代碼(AID): #1MU4czm5 (C_and_CPP)