📌 30 秒摘要(Layer 3)

一本用「有趣問題」展示程式之美的書:從「讓 CPU 使用率畫出正弦曲線」到各種數學與演算法謎題,作者對同一題給出多種解法、逐步優化,帶你看見「從能動的暴力解,到巧妙高效解」的思考路徑。重點不是題目本身,而是多角度思考 + 不斷逼近更優解的習慣。

🗺 心智圖(Canvas)

編程之美

📕 編程之美

微軟技術面試心得

🔀 一題多解

🎯 什麼情境該想到我

當你「已經有一個能動的解,但覺得太慢/太笨、想找更漂亮更高效的解法」時。

⚙️ 怎麼用

  1. 先有正確的暴力解:別一開始就追最優,先確保對。
  2. 找重複與浪費:哪裡在重算?(→ 記憶化/DP)哪裡在做無用功?(→ 剪枝)
  3. 換角度重新表述問題:從數學、資料結構、對稱性等不同視角看,常有簡潔解。
  4. 列出多個解並比較取捨:時間 vs 空間 vs 可讀性,選最適合當前場景的(不一定是漸進最優)。
  5. 用具體小例子驗證每個新解仍正確。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • 最優解不總是最好選擇;若可讀性/維護性代價太高,簡單夠快的解更務實(見 工具-簡單清楚至上)。

🔗 相關工具

同一題不同角度切入 模擬、數學、資料結構、位元運算…

比較各解的取捨 時間 / 空間 / 可讀性 / 實作成本

📈 逐步優化

先求正確 能動的暴力解才是起點

消除重複計算 記憶化、動態規劃、預處理

換更合適的資料結構 用結構換掉多餘的掃描

🧮 數學直覺

問題背後常有簡潔的數學結構 找到它就能大幅簡化

例:位元運算與公式解 把迴圈換成一行式子

🎈 享受思考本身

把難題當謎題玩 而不是苦差事

例:讓 CPU 使用率畫出正弦曲線 從玩心出發的經典題

Link to original

🧰 這本書給我的工具

(解題起手見 工具-程式問題解決策略;面試表現見 工具-程式面試解題套路

✨ 關鍵重點(Layer 1–2)

  • 一題多解:同一問題從不同角度切入,比較各解的取捨。
  • 逐步優化:先求正確(暴力解),再找重複計算/更好結構往上優化。
  • 數學直覺:很多程式問題背後有簡潔的數學結構,找到它就能大幅簡化。
  • 享受思考本身:把難題當謎題玩,而非苦差事。

💬 金句原文(Layer 0)

  • 「先把問題解出來,再想怎麼把它解得漂亮。」

🔗 相關