那是 2023 年 9 月,改變即將來臨的時刻。我發現自己處於工作間隙,幸運的是,谷歌剛剛在肯亞內羅畢掀起了招募浪潮。我遇到了 Google Foobar 挑戰賽,這是我聽過的一項程式設計挑戰。在我從事了十年的程式設計工作之後,我覺得是時候嘗試了。

第一個挑戰就像是熱身——一個二分搜尋問題,感覺就像一場溫和的慢跑。第二和第三個問題也隨之而來,易於管理且引人入勝。但隨後,第四個挑戰出現了,就像撞上了陡峭的山坡。這是我對圖表的介紹,這個概念在我的職業生涯中一直困擾著我。

感覺有點不知所措,我轉向 YouTube 尋求指導。當我觀看解釋演算法和概念的觀點時,我不禁感到一絲冒名頂替綜合症。我當了這麼長時間的軟體工程師怎麼會沒有遇到這些問題呢?

言歸正傳:一位Google招募人員確實主動聯繫了我。隨後進行了電話篩選和三輪面試。不幸的是,我沒能撐過去。但這次經驗點燃了我掌握資料結構與演算法(DSA)的熱情。

決心提高,我找到了 LeetCode 75 題集。我滿懷熱情地解決了這個問題,做了筆記並學習了很多知識。中途,我拿到了今年的第一份合同,這意味著練習的時間更少了。為了不斷鞭策自己,我開始做 LeetCode 的日常挑戰。這最終導致了 365 天以上的連續記錄。

我追蹤了(Google Sheet)[https://docs.google.com/spreadsheets/d/14GXh2RLulTo2vLeLzOuOqqCm5DQmCI-OK8MJvi9yJz8/edit?usp=sharing\]中的每個問題。我的系統很簡單,如果我無法在時間內解決它,我將其標記為失敗

  • 簡單:25 分鐘內解決

  • 中:45 分鐘內解決

  • 困難:1小時內解決

每兩週,我都會重新審視一個失敗的問題並再次嘗試。以下是我一路上學到的:

有些話題比其他話題出現得更多

陣列(列表)

正在關注 (PrimeAgen)[https://www.youtube.com/@ThePrimeTimeagen\]?那您就知道陣列是 DSA 的基礎。一年過去了,我可以保證。高效率的陣列操作至關重要。

弦樂

字串就像陣列,但有一些不同。它們在大多數語言中都是不可變的,這意味著任何更改都需要建立新字串。這是一個慘痛的教訓。

哈希表

映射資料時,雜湊表是首選,因為插入和刪除的時間複雜度為 O(1)。最初,我認為哈希表很複雜,但我了解到它們本質上是物件。

排序

至少了解兩種排序演算法。冒泡排序是經典的並且可以快速編碼。歸併排序很強大,但需要練習。還有桶數排序——速度快得驚人,但佔用空間很大。

貪心演算法

貪心問題很有趣。一旦滿足條件,他們就允許提前退出。這些問題有時仍然困擾著我,但解決它們是值得的。

結論

DSA 可能會讓人上癮。一旦你開始發現模式,解決問題幾乎變得機械化。我希望谷歌能再有一次機會。在那之前,我將繼續打磨 LeetCode,並在這方面做得更好。


原文出處:https://dev.to/davinderpalrehal/1-year-of-consistent-leetcoding-26d0


共有 0 則留言