從去年年底開始想準備找實習,於是就開始懶散的複習。
大二學過數據結構,對基本的算法理論和數據結構有過了解,但是感覺又基本都交還給老師了
於是開始零散的複習,在leetcode上按照通過率由高到低開始刷,發現自己連通過率最高的幾個題都喫力,幾乎每個題都要去看題解然後慢慢消化
刷了十多個題就放棄了,這種盲目的玩法真的太傷自信心了
於是就去看書,先複習下基礎,當然就盲目看書還是沒學到什麼東西
之後又看了慕課網的bobo老師的算法課程,感覺時間不多了就一口氣的看完,邊看邊敲,感覺自己有點進步了,leetcode總共通過了80多個題了
後來,又嘗試了去刷《劍指offer》的套題,憑藉着題解刷到了40多個題,其他的題看着題解都感覺喫力了,於是又放棄了
過年期間懈怠了一下,然後再去做之前通過了的題,感覺還是不會做,原來之前會做都是因爲有視頻和參考題解的作用
這時才意識到自己的刷題方法有問題,只刷一遍是不對的,沒有體系的刷是不對的
於是又回到最基礎的知識點,選擇按類型的反覆刷,不強求每個類型刷多少個題,但一定要掌握知識點,每個題至少做五遍,保證不看題解和原來的代碼自己可以憑藉理解一步步寫出代碼
於是,我就開始高頻考題和優質代碼的整理和刷題,參考《極客時間-算法訓練營》的題目和cyc2018
大佬的複習筆記中的高頻題目開始整理自己的複習筆記,筆記內容都放在我的專欄《leetcode精選題集》
我刷題的步驟可以總結如下:
- 複習某個知識點理論知識
- 尋找某個知識點相關的高頻題(5-10個)
- 開始刷題,先自己想解題思路
- 開始看
leetcode中文站
與該知識點相關的題解,寫出第一版代碼 - 上
leetcode全球站
查看高贊題解(看全球站只需要將中文站的網址leetcode-cn.com
改爲leetcode.com
,其他的路徑都是一致的) - 然後寫出自己覺得最容易理解且效率較優的代碼
- 每個知識點刷兩三個題之後就先不要看題解,自己先做,做不出來再看題解
- 將每個知識點對應的題目和自己能很容易理解的代碼整理成文檔,空閒時間可以看一看
- 然後定期的反覆刷專題,每次針對同一個知識點進行刷題
針對題目的選擇和較爲優化的代碼,大家可以參考下我的專欄,我的代碼全部是由Java編寫的,且代碼都是學習了大量題解後整理的較優的,如果有些題找不到較好的Java題解可以作爲參考。
我對刷算法題的認知就:聽再說的老師講課不如自己去刷自己去理解,前前後後聽了3套網上的面試算法題課程,老師都講的特別好,但是自己動手較少,一寫代碼就不會,所以和我曾經一樣算法一寫就不會的可以嘗試着按專題來逐個攻破
我刷題的目錄整理如下,想體系化刷題的同學可以參考這個路徑(標題鏈接我的專題文章,題目鏈接leetcode中文站題目)
-
- 167.兩數之和II-輸入有序數組(頭尾指針)
- 633.平方數之和(頭尾指針)
- 345.反轉字符串中的元音字母(頭尾指針)
- 680.驗證迴文字符串Ⅱ(頭尾指針)
- 88.合併兩個有序數組(異步指針)
- 21.合併兩個有序鏈表(異步指針)
- 141.環形鏈表(快慢指針)
- 142.環形鏈表II(快慢指針)
- 19.刪除鏈表的倒數第N個節點(快慢指針)
- 234.迴文鏈表(快慢指針)
-
- 普通二叉樹
- BST
-
- 斐波拉契數組變形系列
- 不同路徑系列
- 子序列系列
- 53.最大子序和(子序列最大和)
- 152.乘積最大子數組(子序列最大積)
- 1143.最長公共子序列(子序列最大公共序列)
- 打家劫舍系列
- 買賣股票系列
我的專欄《leetcode精選題集》會一直更新,有好的建議歡迎大家在下方留言
更新時間:2020年3月31日09:43:33