剛剛,又完成了代碼隨想錄二刷!
有不少錄友問我,沒有算法基礎(chǔ),代碼隨想錄一刷需要多久,二刷需要多久之類的問題。
正好 這位錄友前天剛剛做了二刷總結(jié),把自己從零基礎(chǔ)到二刷代碼隨想錄的心路歷程都詳細的寫了下來,分享在星球里。

相信這篇總結(jié)對錄友們刷題會有很大的參考意義,特別是算法基礎(chǔ)薄弱的錄友。
以下分享給大家:
--------------------
我是10月底開始一刷隨想錄的,也是那時候剛接觸力扣,當時甚至連哈希表是什么都不知道。
保持著每天三到四個題的速度,趕在12月31號結(jié)束了一刷。
一刷的目的一方面是為了熟悉各種數(shù)據(jù)結(jié)構(gòu)和算法,另一方面是為了培養(yǎng)良好的代碼書寫規(guī)范。(習慣了看卡哥的代碼和注釋,偶爾去CSDN看帖子里貼的代碼,我真是頭大)
一刷的時候,每天大概會花兩三個小時刷題和看題解,有點囫圇吞棗的感覺,卡哥一般會給一個體現(xiàn)思路的比較詳細的代碼,然后會給一個精簡版的代碼,精簡版我是從來不看的。
二刷是從1月1號開始的,每天六個題左右,正好花了我一個月,但相較于一刷,二刷的時候平均下來,每個題我花的時間更多了,主要是自己思考比較費時間,實在想不出來才會看題解。
當然了,二刷的時候還是很愉快,很有成就感的,因為能明顯感覺到自己的進步。
二刷主要遇到了三種題:
一種是自己能AC的,寫完之后會對照卡哥的題解,看看自己的不足;
一種是比較難,但是有一定印象的題,印象是指我還記得一刷的時候怎么去處理問題的難點,然后自己寫代碼實現(xiàn),例如“替換空格”里resize和反向遍歷就是破題的難點;
最后一種就是二刷的時候仍然沒有思路的題,這種題主要是貪心算法和一部分需要數(shù)學推導的題,例如“環(huán)形鏈表”,我記得這個題需要雙指針,但就是不知道如何設置雙指針。
這些題我都單獨列了一個題單,打算多看看。
印象深刻的是動態(tài)規(guī)劃部分,一刷的時候?qū)τ诳ǜ鐚懙奈鍌€解題步驟體會并不深刻,dp數(shù)組上來就全部初始化為0,二刷的時候才真真體會到,為什么要先確定狀態(tài)轉(zhuǎn)移方程,再來初始化。
還有背包問題,一刷的時候根本就想不到如何將實際問題抽象成背包問題,二刷的時候則對象征背包重量和物品價值的量有了一定的敏感性。
我也總結(jié)出了一些刷題的心得,但是還比較模糊,比較偏向于直覺吧。
例如看到升序數(shù)組會想到二分,看到出現(xiàn)或者查找會想到哈希等等。
現(xiàn)在拿到一個題,我會先看函數(shù)返回的數(shù)據(jù)類型,然后再去考慮用什么樣的數(shù)據(jù)結(jié)構(gòu),如何維護數(shù)據(jù),如何去遍歷數(shù)據(jù)等等。
當然,也體會到了自己的不足。
隨想錄的題都是每個部分劃分好的,動規(guī)的題自然會想動規(guī)的解法,但每日一題和劍指不是,我時常在解每日一題時,上來就暴力回溯超時,然后才會考慮別的解法。
主要還是因為之前刷題時,沒有自己去考慮時間和空間復雜度,之后刷題時,我會有意識的計算這些。
還有一個不足就是對于代碼的調(diào)試,今天刷劍指才發(fā)現(xiàn)力扣上的劍指只有一個測試用例,一但沒有AC,調(diào)試起來就比較難受,之后也會有意識地培養(yǎng)這方面的能力。
Anyway,趁熱打鐵二刷了隨想錄,收獲還是蠻大的,三刷可能就要等到秋招面試的前一個月了,下一階段的計劃是半個月內(nèi)刷完劍指,以及完善上文提到的不足之處。
---------------------------
這位錄友是 21年10月份的時候,加入的知識星球,這是他當時的自我介紹

之后,他在星球里的打卡就沒有斷過了。



其打卡一直持續(xù)到昨天,也就是2022年2月4號

所以有計劃,有執(zhí)行,有總結(jié),做什么事情都不會差。
網(wǎng)址:programmercarl.com,200道力扣題目刷題順序,詳細題解,支持C++、Java、Python、Go、JS等多語言版本,一個你只要發(fā)現(xiàn),就會收藏的硬核算法學習網(wǎng)站。
覺得不錯的話,還請小伙伴 點贊 支持下,希望能幫助到更多同學 ??