Notes
← All notes
·frontend·13 min

LeetCode Cycle 06:Stack / Queue 與單調棧——資深面試的容器思維

Stack / Queue 在面試最常見的失誤是只會背題、答不出「為什麼這題用 stack」。資深面試官會盯著看你能不能講出「需要回頭看就用 stack」、「LIFO 模擬遞迴 stack 就是 backtracking 的 iterative 寫法」、「monotonic stack 是 next greater element 的招牌解」。內部使用。

#leetcode#algorithm#stack#queue#monotonic-stack#structuredclone#interview-prep#面試系列#private

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() 就要警覺。