許多科技公司在面試時都會有「白板題」的技術考題,也帶動近年來軟體圈瀰漫著一股「LeetCode 刷題」的風潮。面試者會把 LeetCode 視為面試準備的考古題,但我一直覺得如果只是為了面試而刷題反而失去的寫程式的初衷。因此這一次我打算從一題一題的 LeetCode 題目中,深入淺出地拆解各種面向的解法。並且試圖從 Python 與 JavaScript 兩個程式語言間轉換,探索超越程式語言之外更純粹的邏輯思考。
題組回顧與觀念統整 前三天的練習我們深入「遞迴(Recursion)」的方法做了一連串的實作練習,不管是在鏈結串列或是樹結構,還有其他的問題中也都能看到遞迴的...
53. Maximum Subarray 接下來我們挑 53. Maximum Subarray 的題目,這個題目直接用窮舉或暴力法可能會有時間上的疑慮。因此...
70. Climbing Stairs 這是一個動態規劃的經典題目「爬樓梯」,這個題目根據規則利用「遞迴」其實蠻直覺的。只是遞迴在這個題目中會存在一些效能與重...
62. Unique Paths Unique Paths 也是一個蠻生活化的題目,所以我們挑選這一題再次挑戰動態規劃的概念與實作。很多人會覺得動態規劃很難理...
題組回顧與觀念統整 這一段我們著重在「動態規劃」優化,如何從窮舉或遞迴的方法中進一步地將結果記錄下來而不用重複計算。例如昨天的「爬第 n 階樓梯的方法數」與今...
為什麼要刷題? 在經歷過了二十天左右的刷題練習經驗,我們從不同的題目中嘗試了各種有趣的程式題目。 回到我們這個鐵人賽的初衷,還記得為什麼要刷題嗎? 就如同我們...
除了刷題之外的事 「程式設計」的練習是一種從「寫得出」程式到「寫得好」持續迭代的優化過程,在 LeetCode 刷題的過程中我們掌握的是「解決問題的能力」,特...
除了刷題之外的事 刷題是練習解決問題的能力的一種方法,而這裡的「問題」主要是指演算法問題。但在實務的工作場景當中,「演算法問題」只是程式工作的一小部分而已。我...
除了刷題之外的事 刷題是練習解決問題的能力的一種方法,而這裡的「問題」主要是指演算法問題。但在實務的工作場景當中,「演算法問題」只是程式工作的一小部分而已。我...
什麼是 LeetCode? 「什麼是 LeetCode?」是整個鐵人賽系列文章的第一個主題,你現在會怎麼會回答這個問題呢? ▶ LeetCode 是一個線上解...