← All notes
LeetCode Cycle 06:Stack / Queue 與單調棧——資深面試的容器思維
Stack / Queue 在面試最常見的失誤是只會背題、答不出「為什麼這題用 stack」。資深面試官會盯著看你能不能講出「需要回頭看就用 stack」、「LIFO 模擬遞迴 stack 就是 backtracking 的 iterative 寫法」、「monotonic stack 是 next greater element 的招牌解」。內部使用。
Cycle 06 的 Notion 筆記只剩一段——複製 array 用 slice() 還是 JSON.parse(JSON.stringify(arr))。原文沒寫的是:那一段筆記是 2020 年的,現在的答案是 structuredClone()[^1]。但這篇真正要講的是 stack / queue 的面試題型——這組題在 senior FE 面試裡的角色是「現場思路解碼器」:括號匹配、表達式求值、單調棧三大模式,每一個都是面試官用來看「你會不會分解一個非平凡問題」的篩子。
Stack / Queue 在 JS 裡用 Array 怎麼模擬
JS 沒有專門的 Stack / Queue 類別,全部靠 Array 模擬。Cycle 02 已經算過 runtime:
- Stack:
push/pop都是 O(1)(尾端操作) - Queue:
push+shift一組——但shift是 O(n)。要 O(1) queue 要用「兩個 stack」或「array + head index」(Cycle 02 講過)。
也就是說:寫 stack 題不會踩 runtime 雷,寫 queue 題第一行 arr.shift() 就要警覺。