練習時長一年半,演算法蒟蒻的成長記錄
寫在文章前:
這篇博客主要是記錄這一年半來升級打怪的記錄,雖然一直想做這件事情,但還是太懶,近期學習環境的變動給我帶來了一段較長的空閑時間,每天就是啃入門經典、刷演算法題,持續了兩周,下午想換點心情,于是寫下了這篇博客,
開始征程
我是大學畢業前夕才開始接觸演算法的,那時候剛考完研,準備找一下暑假實習作業,開始跟基友一起刷演算法題準備抓住春招的尾巴在暑假找點事干,于是戰斗場地從考研自習室搬進了圖書館,《高數十八講》也換成了《演算法與資料結構》,
其實大二的時候也啃過一段時間《演算法與資料結構》,但是沒堅持下去,這也是我大學以來挺后悔的一件事,現在回想起來,如果當時堅持下去是否能拿個省賽牌子,加上當時大學宿舍學習氛圍還是有一點的,說不定也不用考研,直接沖大廠了,嗚嗚嗚,
剛開始學習演算法的時候,一邊刷LeetCode一邊啃《演算法與資料結構》,和其他人可能不一樣,我是按題目編號直接開刷,而不是按簡易程度,碰到中等題有時候還真是一杯茶,一包煙,一行代碼寫一天,這段時間因為要保持畢設的進度,所以斷斷續續在畢業前也只刷了50多道題,演算法書啃完了前四章,
刷經驗
畢業后還是沒找到實習,原因是實習時間太短都被拒了,不過好歹在畢業前體驗了一下面試,去的是一家做叫做深析智能的生物醫療公司,我至今還記得面試的三道題:第一道題是個排序,不過要O(n)的時間復雜度,很明顯是個桶排,但是我還一直傻傻的在那憋快排的代碼,第二題是個簡單的字串回圈移位,第三題是斐波那契數列的遞回與非遞回,
畢業后,老爸安排我幫忙看他的零售店,白天廣東很熱基本沒人,我就刷題,夜晚人比較多,就看點《易經》、《演算法與資料結構》之類的,早上基本是6點多起床去跑步,然后吃完早餐睡個回籠覺睡到11點的樣子,所以一天差不多只能學四五個小時的樣子,這時間差不多是在練習基礎題的樣子,LeetCode的周賽我有時間基本都會打,記得第一場周賽第一道題都沒做出來,當時以為是一道博弈題,但現在仔細想想,應該就是個貪心問題,賽后想學習學習大佬的代碼,但基本都看不懂,于是周日上午的比賽也成了我最期待的一件事,因為我迫不及待地想證明自己,但是每次都是被虐得很慘,基本都是一道題結束,偶爾能做出第二道題,暑假的兩個月時間,從50多道刷到300多道,平均每天四五道的樣子,現在回想起來,畢業后的暑假過得甚至比在學校還充實,每天晚上回家還會練兩組keep,也堅持鍛煉了兩個月時間,無論哪方面這段時間都讓我自信了不少,
練級
上了研究生之后,由于課程比較多,能學習的時間本身就不多,第一學期導師基本就是放羊,我也不怎么去實驗室,基本在宿舍,除了打游戲就是刷題,陸陸續續也刷了100多道題,《演算法與資料結構》也啃到了第七章排序,這段時間實作了第一次周賽AK,第一次前200、第一次前100,每一次都很激動,我還截了圖留作紀念,11月之后的周賽基本都能保持在3題左右,狀態好的話還能AK,所以后面基本不怎么刷題了,只是每天一道題來保持手感,


沖關
寒假后,由于疫情原因一直鎖在家里,在老家那段時間,我盡量保持每天學習四五個小時,但是挺難的,因為搬新家,家里實在太舒服了,也想借著這段時間陪陪爸媽,我甚至跟爸媽把《倚天屠龍記》跟《三國》完完整整看完了哈哈哈,當時學習效率并不怎么高,還好LeetCode有個激勵機制,每天刷三道新題就能拿積分,所以這段時間也刷了近一百道題吧,同時還把《C++代碼整潔規范》啃了一遍,不過現在基本不記得啥了,所以現在我秉持“邊學邊用”的準則,盡量別讓自己走大學本科的老路,本科確實學了挺多的,C/C++,Java,Android,機器學習,Python但是時至今日我對Android還記得的只有Activity的幾個生命周期,本科這種錯誤的學習觀念浪費了我太多的時間,但是換個角度安慰自己,這些無用功確實在一定程度上增強了我的自學能力,可能這是大學四年最寶貴的成長了吧,現在我還一直給我剛讀大學的表弟灌輸這個學習觀念讓他直接刷演算法題,我同學都說我是個魔鬼哈哈哈,
疫情期間有段時間周賽一直掉分,有時候甚至只能做出一道題,很離譜,很是特別難受,盡管每天都還在刷題,然后一個月后又能回到正常狀態,然后又開始跌落低谷,如此回圈了兩三次,后來為了趕上競賽選手的排名甚至還啃上了《演算法競賽入門經典》,這段時間我估計就處于哲學中的否定之否定、曲折上升階段,
五月份左右,導師開始給我派發資料,然后開始確定我的研究課題,這段時間回到廣東后,也開始上剩下的兩門網課以及助教的一門課,其實時間也不多沒有每天堅持刷題,主要是打周賽,到了7月份返校后,我開始接觸其他的競賽OJ網站牛客、Codeforce也偶爾打些比賽但是不多,到了9月份力扣秋季賽的時候,個人賽拿到了前100的名次,當時自己也沒想到能拿到這么高的名次,頓時信心大增,后來周賽基本都能AK,只可惜團隊賽因為當時課題需要出差而沒打成,

修煉
時至今日我覺得自己仍有很大的進步空間,我基友有時候會問我,你花這么多時間在演算法上有啥用啊,面試只不過就考些LeetCode簡單題和中等題,差不多就行了,但是現在我不再把學習演算法當作面經或者學習來看待了,我只覺得這跟我玩游戲差不多,但是這個又比游戲來得正經,完后不會覺得空虛,所謂的高級趣味就是如此吧,我時常會想起《絕命毒師》中老白死前所說的話:“只有我在制毒的時候我才會感覺到我是活著的,”,我挺享受競賽帶來的密集思考和學習新知識帶來的興奮,其實演算法競賽在編程能力給我帶來的提升是不少的,最直觀的就是能很快就找到代碼的bug在哪以及如何避免特殊的測驗樣例帶來的Wrong Answer,LeetCode的每日一題偶爾會隨到我之前AC的題,但我也很樂意去再做一遍,然后對比昨天跟今天的我寫的代碼差別在哪里,今天上次雙周賽的競賽積分剛結算,剛好沖到2000分,上次雙周賽也沖到了排行榜第一頁(雖然后面被趕上來了嗚嗚嗚),希望下次寫總結的時候能LeetCode沖到2500,Codeforce上2000,


共勉
橫眉冷看生與死,騎者且趕路!與諸君共勉,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230682.html
標籤:其他
下一篇:12月份的博客能續上嗎?
