在計算機領(lǐng)域中算法和數(shù)據(jù)結(jié)構(gòu)是最核心的知識,也是各大IT公司招聘工程師時必考的內(nèi)容爽冕。我之前雖然學(xué)過算法和數(shù)據(jù)結(jié)構(gòu)仇祭,但學(xué)得不夠扎實,很多面試尘被考的算法題看了以后都沒有思路乌奇。還有幾個月就要參加秋招了没讲,在此之前必須要將數(shù)據(jù)結(jié)構(gòu)拿下。因此這段時間一直在復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法的知識礁苗,同時在Leetcode上刷題爬凑。
刷了一段時間,發(fā)現(xiàn)效率比較低试伙。我以為一開始就是這樣嘁信,刷多了就會比較快了。后來才發(fā)現(xiàn)原來是我的刷題方法有問題疏叨。剛好前段時間看到了極客大學(xué)的算法訓(xùn)練營課程潘靖,主講人是CMU信息專業(yè)碩士、前FaceBook工程師和面試官覃超蚤蔓。而且有體驗課卦溢,時長一周,有視頻課程和微信群服務(wù)秀又,才9.9元单寂。抱著試試的心態(tài)就購買了。一周的算法體驗課一下子就過去了吐辙,體驗課雖然短暫宣决,但是全部聽完還有很多收獲。
首先袱讹,最大的收獲就是我知道了該如何正確地刷題疲扎。之前我刷題時昵时,都是自己先想捷雕,然后嘗試實現(xiàn)。有時覺得有思路壹甥,但是提交的代碼一直通不過救巷,就一直反復(fù)嘗試,直到最終通過句柠。有些題實在通不過浦译,只能看別人的題解時,心情就很沮喪溯职,尤其是覺得自己已經(jīng)花了那么多時間在這道題上精盅,實在可惜。一些題一點思路都沒有谜酒,就很快去看題解叹俏,但心里總有種罪惡感。聽了算法訓(xùn)練營中覃超老師的介紹后僻族,我才知道我的刷題方式非常典型粘驰。但很可惜是錯誤的屡谐!
覃超老師推薦的刷題方式是:拿到一道新題,先自己思考5分鐘蝌数;5分鐘內(nèi)如果有思路愕掏,則自己嘗試實現(xiàn),如果沒有思路則立即去看題解顶伞!如果自己實現(xiàn)不出來饵撑,也不要一直死磕,趕緊去看題解唆貌!看題解可以先看官方題解肄梨,然后看其他精選題解,要習(xí)慣于學(xué)習(xí)別人的優(yōu)秀代碼挠锥。如果使用的是Leetcode國內(nèi)版众羡,那之后還要去國際版看看那些高票題解!看到那些高票的優(yōu)秀題解后蓖租,要照著自己敲一遍粱侣!
這樣刷完一道題之后,其實還沒有完蓖宦。之后我們應(yīng)該不看題解齐婴,自己將剛剛學(xué)到的優(yōu)秀題解馬上再實現(xiàn)一遍。然后明天再實現(xiàn)第三遍稠茂!一周后再將同一道題刷第四遍柠偶。最后,在去參加面試的一周前要將刷過的題再做一遍睬关!總共一道題至少要刷5遍诱担,覃超老師將這種方法稱為“五毒神掌”!如果基礎(chǔ)比較薄弱电爹,5遍下來還是記不住蔫仙,那就刷5遍以上!總之一定要多刷遍數(shù)丐箩,遍數(shù)才是王道摇邦!覃超老師認(rèn)為刷題最大的誤區(qū)是只刷一遍。
為什么要這樣做呢屎勘?第一施籍,這是因為我們的記憶是如此地不靠譜,唯有多刷遍數(shù)才能將那些巧妙概漱、精簡的代碼真正記住丑慎。很多題,你當(dāng)時以為自己理解了,能夠?qū)崿F(xiàn)了立哑,但過一段時間很快就忘了夜惭。究其原因,就是因為我們還不夠熟練铛绰,記憶不夠深刻诈茧。因此需要通過多刷幾遍這樣的笨方法來鞏固自己的記憶。第二捂掰,面試時能夠用于解決一道算法題的時間是有限的敢会,而且面試時我們往往會緊張。因此我們必須要在面試前多加練習(xí)这嚣,將常見算法的解法練得非常熟練鸥昏,這樣才能在有限的時間內(nèi)快速地寫出高效、正確的代碼姐帚。
其次吏垮,參加算法訓(xùn)練營學(xué)習(xí)了一些新的數(shù)據(jù)結(jié)構(gòu)。比如說覃超老師課上介紹的跳表和 Tries 字典樹都是我之前沒有學(xué)習(xí)過的數(shù)據(jù)結(jié)構(gòu)罐旗。學(xué)習(xí)了這些新的數(shù)據(jù)結(jié)構(gòu)膳汪,縮小了我的知識盲區(qū),而且能跟之前學(xué)過的數(shù)據(jù)結(jié)構(gòu)建立聯(lián)系九秀,整個數(shù)據(jù)結(jié)構(gòu)的知識體系更加完善遗嗽、牢固了。
再者鼓蜒,課程中推薦的 LeetCode 題很有針對性痹换。這些題有簡單有難,但都是針對知識點的經(jīng)典題都弹。學(xué)完數(shù)據(jù)結(jié)構(gòu)和算法之后娇豫,馬上拿相應(yīng)的題目練手,這樣才能真正消化那些理論知識缔杉,同時還能驗證自己是否真正理解理論知識锤躁,幫助發(fā)現(xiàn)自己的薄弱環(huán)節(jié)。以前我學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法時或详,最大的誤區(qū)就是疏于練習(xí),代碼敲得太少郭计!從此以后霸琴,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法一定要配合習(xí)題多加練習(xí)!
最后昭伸,體驗課多次的分享也很有料梧乘。雖然體驗課只有一周的時間,但是安排了多次高質(zhì)量的分享。有前輩的經(jīng)驗分享:如何學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)选调、如何準(zhǔn)備面試夹供,也有針對具體算法題的深入講解,這些內(nèi)容都很有價值仁堪,讓人獲益匪淺哮洽。
總的來說,我認(rèn)為這是一門非常有價值的算法體驗課弦聂,而且性價比超高鸟辅。感謝極客時間!體驗課程結(jié)束后我購買了課程莺葫,決定跟隨覃超老師和一群志同道合的人一起將算法和數(shù)據(jù)結(jié)構(gòu)拿下匪凉。
如果有興趣了解算法課程,可以看極客大學(xué)的相關(guān)介紹捺檬。此外再层,覃超老師在bilibili上有一些視頻課,包括如何刷題堡纬、具體算法題的講解以及一些科技評論树绩,感興趣的直接在bilubili搜索“覃超大魔王”就能找到。