📕 編程之美

微軟技術面試心得

🔀 一題多解

🎯 什麼情境該想到我

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

⚙️ 怎麼用

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

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

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

🔗 相關工具

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

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

📈 逐步優化

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

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

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

🧮 數學直覺

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

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

🎈 享受思考本身

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

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