刷 LeetCode 那點事 !

有一段時間沒有更新 LeetCode 打卡帖了 ,其實自己有偶爾刷題 ,但是沒有寫成文章記錄分享出來 ,主要還是自己懈怠了 ,另一個重要原因就是寫這記錄帖比較費事卻沒多少人看 。最近想了想 ,關於刷題做了一些淺顯的思考 。

首先 ,爲什麼刷題呢 ?當然是想着提高自身能力 ,在算法筆試面試中脫穎而出 。那麼問題就來了 ,算法面試他面的只是一個具體的題目嗎 ?

很顯然不全是的 ,相信有人在面試中幾乎做出了所有題卻與 offer 擦肩而過 ,也有人並沒有完美攻克所有題目卻最終拿到了心儀的 offer 。至少和實驗室有經驗的學長同學溝通發現是有這樣現象的 !

有人說 :算法面試優秀不意味着技術面試優秀 ,技術面試優秀不意味着能夠拿到 offer 。的確是這樣子 ,幾個題目就能確定一個人的能力嗎 ?不全然 !更多的時候 ,感覺技術面試不能侷限於一個題目 ,侷限於能否做出來正確結果 。而是考驗一個人的思考方式和思考方向 。

舉幾個例子 。第一 ,很多題目不只有一個解法 ,暴力窮舉可以解決 ,巧妙技巧也並不缺乏 ,能否做出正確結果還真不是最關鍵的 。更優秀的代碼(例如時間空間複雜度的優勢)肯定更能吸引到面試官的注意也能從一定程度上證明你的過人之處 。第二 ,許多題目會有多種特殊情況或者邊界問題等 ,代碼整體思路是對的 ,卻總有通不過的樣例 ?往往就是在這些特例上撞了牆 。再比如排序問題 ,方法很多 ,但是能簡單的說快排就是最快的嗎 ?事實上 ,數據的特徵不同 ,採取不同的排序方法誰優誰劣真不一定 。有沒有可能包含有大量重複的元素?原始數據有序度如何等等都值得思考 。

所以啊 ,平時還真不能侷限於 " 做出來就好 " ,而是要多思考 ,多種思路並且更加全面纔好 !小詹覺得面試官更加看重的也許就算思考能力和邏輯能力吧 。

那麼 ,怎麼刷題呢 ?在線刷題系統其實不少 ,以 LeetCode 爲例 ,難度分 3 檔 ,並且每一題都有序號 ,是從前往後 ?還是從易到難 ?遇到難題 ,是死磕到底還是瞟一眼別人的代碼 ?

其實每個人習慣和想法不一樣 ,不好說哪一個更好 。小詹分享下自己的看法如下 。

  • 刷題順序 。之前是粗暴的從前往後 ,但是自己想了想更推薦一個專題一個專題的進行 。比如數組 、鏈表 、隊列 、動態規劃等等 ,一個一個的攻克 ,沒必要每一題都刷 ,挑一些經典的具有代表意義的 。以數組爲例 ,題目使用較多的方法有二分 、雙指針 、回溯等 ,就可以考慮每一類數據結構的每一種方法挑選幾題仔細攻克 ,比廣撒網也許更好一些 。
  • 刷題習慣 。遇到簡單題目也許很快就有思路並寫出來正確代碼了 ,但是更加建議即使是簡單的題目也思考下多種思路 。當然小詹推薦花大精力刷中等難度的題目 ,太簡單和太困難的可以先放過 。遇到難題也不要馬上就去看別人的代碼 ,看懂別人的和自己寫出來是兩回事 ,先自己嘗試思考 ,如果多種思路都嘗試了依舊不行可以去看看別人的思路 ,看懂後最好自己復現一下 。
  • 分析筆記 。其實看對某個題的掌握程度最好方法就是讓自己跟別人講解分析 ,教會了別人 ,自己一定印象深刻 ,因爲這會大腦思考轉的非常快 !所以做筆記分析思路是個很不錯的習慣 !

一家之詞 ,多多思考探索自己的方式 。也歡迎留言區分享你的刷題順序 和技巧 ,也許能給別人帶來一定啓發噢 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章