大家好,我的名字是Greg。我從2020年起就開始從事網頁開發。幾年前,我開始了我的LeetCoding之旅。在這段時間裡,我積累了一些關鍵的見解,想要與大家分享!
LeetCode的優勢在哪裡?
它有助於發展演算法和抽象思考,為競賽程式設計打下堅實基礎。它讓你在實時程式碼面試和處理非平凡的問題時更有信心。它訓練你能在腦中想像複雜的資料結構及其關係,事先規劃整體解決方案,評估漸進複雜度,並寫出高度效能、優化的程式碼.
LeetCode 哪裡有不足?
絕大多數的產品開發任務都圍繞著與框架和 API 合作,讓深度 DSA 知識在日常生活中應用相對較少。LeetCode 無法教會你產品心態、系統架構、團隊合作,或如何維護遺留代碼庫。主要收穫:LeetCode 能讓你成為一位優秀的程式設計師,但未必能讓你成為一位優秀的軟體工程師。
辨識並填補基本差距
超越基本演算法與資料結構,解決某些問題迫使你深入數論、組合學、位元操作、遞迴、搜尋演算法、記憶化、動態規劃 (DP),以及更多。
LeetCode 與實際開發
即使是最難的 LeetCode 題目也完全缺乏周遭的背景資訊 - 它們完全是孤立的。然而,現實世界的開發任務總是伴隨著現有的程式碼基礎和商業背景,你必須加以考慮,這通常就是真正複雜性的所在。
認知上的好處超越了程式設計
經過無數次挑戰,你的大腦適應了系統性思考,改變了你面對現實挑戰的方式。你不是會恐慌,而是本能地把大問題分解成可管理、可解決的步驟。在原本的混亂中,你開始看到模式。你自然傾向於更簡單、更高效的解決方案,並最小化浪費的努力.
要達到「Beats 100%」的性能
選擇正確的演算法不夠;你還需要深入理解你的程式設計語言並發揮其全部潛力。幾個解決同一問題的方案可能有相同的時間和空間複雜度,但它們底層的實現可能會導致實際執行時間差異巨大。因此,一個高度語言優化的O(n2) 算法有時候在實際應用中可以超越未優化的 O(n) 解決方案.
我可能後來會寫一篇關於 JavaScript/TypeScript 實際微優化的文章.
LeetCode 是 IT 剑客的道路!












