紀錄 LeetCode 刷題

J.Y. Hsiao
5 min readNov 17, 2021

--

背景: 曾刷過不到 50 題,工作是影像處理演算法工程師(C++),經歷兩年。非資工本科,在學校完全沒修過資結和演算法的課,一直對自己的能力沒有信心,決定要換工作後,開始規劃刷題,除了面試,另一方面也可以好好加強和完整複習一遍資料結構和演算法。

目標: 外商軟體工程師。

1.找資源

自認資質駑鈍需要詳細講解,但幸好英文程度還 ok,有覺得因此多了不少資源。

在 Udemy 選擇 Mastering Data Structures & Algorithms using C and C++ (後來發現老師 Abdul Bari 在 YouTube 也有頻道,不確定內容是否一樣)。

Master the Coding Interview — Data Structures + Algorithms 是另一個熱門課程,內容比較簡單,但跟著實作一遍也是很好的複習。

LeetCode 部分有購買 Premium (感恩節/黑五有特價)。

刷題主要根據以下三項,如果準備時間不多,建議可以直接用 b, c 或是 LeetCode Top 100:

a. 250 題 (最初大範圍的知識奠定): 刷題順序參考這裡,按照 <400題List> 的順序,就算是 Hard 也不會跳過,但只做列在<重點 250 題>裡的題目,會這樣單純是因為400題真的太多,完全沒動力。

b. LeetCode Patterns

c. NeetCode 整理 SPREADSHEET BLIND-75:大推這個頻道,講解清楚,我的救星,很多題目都是先看這邊的影片了解之後,才看懂 LeetCode 討論區的作法。就算不是寫 python 也可以看,因為思路是相通的。推薦影片: How to use Leetcode in 2020

2. 規劃

因為是利用下班和假日時間準備,不想把自己逼太緊,整個計畫原本粗估 8 個月,包含線上課程、刷題、寫履歷和更新 LinkedIn profile,還有練習 behavior question 和找職缺的時間,全部算進去。

因為在時間上沒有太大壓力,在估算時都盡量寬鬆,先以建立起刷題習慣為目標,即使如此,後來還是花了不止 8 個月。

3. 實際執行 (用 python 刷)

初期: 一週 14 題,週末看課程並跟著實作一遍,等做完 250 題,大概過了 5 個多月。這個階段刷題超痛苦,絕對要洗腦自己不可以放棄,幾乎都直接看討論區或直接 google 方法,1題至少花1小時以上。

後期: LeetCode Patterns。按照裡面的順序, Easy 一天 5 題,Medium 一天 4 題,Hard 一天 3 題。除了要在 LeetCode 通過之外,還有模擬面試白板題,練習要怎麼講解方法、分析時間空間複雜度,另外直接手寫在白紙上。大概花了 3 個月還沒全部做完(剩一些 Hard),就進到下一階段。

4. 開始面試,噢不!

更新了 LinkedIn profile 後,有家大公司 recruiter 聯絡,完全不在我的意料之中。當時甚至連英文履歷都還沒完成,也還沒調適到要面試的最佳狀態,更慘的是因為工作內容,所以一定要以 C++面試。

計畫完全被打亂,(技術性延遲了面試時間後)開始改用 C++ 寫題,然後也陸續有其他家面試。密集面試的兩個月內,主要就用 LeetCode Top Interview Questions 複習,然後練習要面試公司的考古題,每個職位面試關注的重點差蠻多的,其他專業知識也要複習,Behavior question 的擬答也是重點。

這部分最困難的是建立自信,思緒和口齒清晰的表達自己的想法,慌張就輸了。

5. WOW

找到新工作了! 離職! 交接!

THE END.

回想起來,其實很像一場夢,前面花了 8 個月準備,下班後一題一題慢慢磨的努力,經歷突然壓力爆表面試的 2 個月就這樣結束了。

最後的題數: 382

自己的體悟

遇到挫折覺得痛苦的時候,心靈很脆弱,會有質疑的聲音不停在腦海裡出現。網路的資訊很多但也很亂,有好幾次突然發現其他“看起來”可以讓我更快達到目標的資源或方法,然後會開始懷疑自己是不是走錯路,想著要不要重新規劃。(最低潮的時候會連整個職涯都想重新規劃,想重讀大學。)

由過往的經驗,如果在規劃計畫的時候有用心找資料,擬定出的計畫應該是不會差到哪裡去,突然換成另一個“看似”更好的計畫,反而會花更多時間,或是導致最後的結果和預期的目標有差距,甚至因為一直改動最後一事無成。倒不如不要想那個多,好好的完整執行原本的計畫就好,但前提是一開始有好好查資料然後做規劃。(當時剛好讀到超速學習講到最初的計畫對整個學習的重要性,應該多分一點時間給事前計畫)

一件事的開始一直都是困難的,但一直堅持下去總會漸入佳境,就算沒有至少也會習慣這種苦。不知不覺累積之下,就會離目標更近一步。(不管是不是事實都要這樣催眠自己)

每個人適合的學習方法都不一樣,別人的簡單是自己的困難,誠實面對自己的弱點,並了解沒有捷徑後,就請死心踏地的慢慢努力吧。(對自己不要有不切實際的期待)

--

--