小白一路走来,连续刷题三年,谈谈我的算法学习经验
數(shù)據(jù)結(jié)構(gòu)與算法應(yīng)該算是一個(gè)比較難的模塊,從小白一路走過來,從大一連續(xù)刷過好幾年題,看過挺多書,踩過挺多坑,也漲了一些經(jīng)驗(yàn),姑且在這里分析一波對(duì)數(shù)據(jù)結(jié)構(gòu)與算法 的學(xué)習(xí)經(jīng)驗(yàn),請(qǐng)耐心看完,相信對(duì)你會(huì)有所幫助。
對(duì)于初學(xué)者來說,我認(rèn)為選擇一本合適、不錯(cuò)的算法書是非常非常重要的,從大一到現(xiàn)在我也看過不少的算法書,當(dāng)然在學(xué)習(xí)算法的過程中也走過不少坑,刷了很少題,總結(jié)了不少經(jīng)驗(yàn),下面說說
我的一些經(jīng)驗(yàn)吧,請(qǐng)耐心看完,相信一定對(duì)你有所幫助。
書籍視頻推薦
小白入門:書單、視頻推薦
數(shù)據(jù)結(jié)構(gòu)與算法相關(guān)的書籍應(yīng)該是我看的最多的一種數(shù)據(jù)吧,從大一到現(xiàn)在,從未間斷過,下面就介紹下從大一到現(xiàn)在都看過哪些自認(rèn)為優(yōu)秀的書籍,注意,我不知道適不適合你,但我覺得看的過程中很舒服。
1、數(shù)據(jù)結(jié)構(gòu)與算法分析(c 語言描述版)
我相信大部分人大學(xué)看的教程都是清華大學(xué)出版社嚴(yán)蔚敏寫的那本書,說實(shí)話,作為初學(xué)者,那本書我沒能堅(jiān)持看下去,可能比較適合大佬看吧。我自己買了一本《數(shù)據(jù)結(jié)構(gòu)與算法分析(c 語言描述版)》,挺薄的,不過感覺很棒,這本書讓我學(xué)到了很多,個(gè)人感覺也挺容易懂的,代碼實(shí)現(xiàn)是采用 C 語言來實(shí)現(xiàn)的,不是偽代碼,如果你想學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),我覺得這本書是個(gè)不錯(cuò)的選擇。班級(jí)里有挺多人看了《大話數(shù)據(jù)結(jié)構(gòu)》,挺他們說也挺不錯(cuò),不過我沒看過。
2、挑戰(zhàn)程序設(shè)計(jì)競(jìng)賽
這邊書也是大一時(shí)看的,學(xué)習(xí)算法,刷一些題是必須的,所謂3分理論7分實(shí)踐。如果你想刷題,我挺推薦這本書,里面分初級(jí)、中級(jí)到高級(jí)。雖然每道題沒有講的特別詳細(xì),但當(dāng)時(shí)都看懂了,真心不錯(cuò)。不過高級(jí)那部分我是沒看,初級(jí)和中級(jí)看著挺舒服。也是學(xué)到挺多的,推薦給大家。
3、算法(第四版)
這本書估計(jì)是賣的最火的一本書吧,采用 Java 語言來實(shí)現(xiàn)的,不過在看這本書之前,我覺得你得要有一定的算法基礎(chǔ),例如你得知道啥是隊(duì)列,啥是棧。我不認(rèn)為這是本入門書籍,所以,你可以先學(xué)習(xí)
我上門推薦的那些書,有一定的基礎(chǔ)之后,再來學(xué)習(xí)這本。這本書主要是用大量的圖片來演示算法,讓人覺得比較友好。
4、編程之美
不用說,很美,這本書是我今年剛?cè)胧挚吹?#xff0c;只能用強(qiáng)烈推薦來形容,在這本書里,學(xué)到了挺多技巧,里面列舉的題也不是特別難,目前看了 80%,真香。剛開始我聽別人說如果要準(zhǔn)備面試谷歌什么的建議看,我以為很難,遲遲沒買來看,不過,我看的過程中,感覺還好,相信你也能看的懂,想學(xué)習(xí)算法、刷題的,強(qiáng)烈推薦。
5、編程珠璣
這本老早就聽別人說過了,去年看的,不過也是看了80%左右,和編程之美一樣,強(qiáng)烈推薦,這本書里的題,說實(shí)話,感覺比編程之美有意思,
當(dāng)然,數(shù)據(jù)結(jié)構(gòu)與算法的還有很多優(yōu)秀的書籍,我自己也看過不少,不過以上這些,我覺得很不錯(cuò)。自己也買過算法導(dǎo)論等,不過,沒看的下去。
這些我也都準(zhǔn)備了電子書籍,
不過我發(fā)現(xiàn)放百度鏈接容易失效,如果你感興趣的話,或許可以關(guān)注我的公眾號(hào):苦逼的碼農(nóng),回復(fù)“電子書”獲取。
2、視頻介紹
作為初學(xué)者,學(xué)習(xí)算法是一個(gè)相對(duì)比較艱難的過程,比起看書,可能看視頻會(huì)相對(duì)好理解點(diǎn),當(dāng)然,這里引人而異,有些人喜歡看書不喜歡看視頻,這里主要是根據(jù)你自身來選擇了。
說起視頻,我自己看的也不多,我是屬于喜歡看書的那一種,不過我覺得這些這些視頻還不錯(cuò),推薦給大家。
1、牛客網(wǎng)有個(gè)初級(jí)和進(jìn)階班的視頻,我覺得很不錯(cuò),不過我看過進(jìn)階班的,初級(jí)班的沒看過,感覺還不錯(cuò),截圖如下:
2、直通bat班:這個(gè)我覺得也不錯(cuò),也是適合新手入門的那種
這些視頻我都有保存在我的百度云盤,不過可能涉及的版權(quán)問題,一下子就鏈接失效,所以就不直接貼地址了,感興趣的可以在我的公眾號(hào):苦逼的碼農(nóng),回復(fù)“數(shù)據(jù)結(jié)構(gòu)與算法”
來獲取。
當(dāng)然,而已非常歡迎大家關(guān)注我的公眾號(hào),我的公眾號(hào)主要寫算法、計(jì)算機(jī)基礎(chǔ)、Java等相關(guān)文章,已經(jīng)有 100 多篇原創(chuàng)文章了,總結(jié)了很多與算法相關(guān)的技巧。好多文章被各大公眾號(hào)轉(zhuǎn)載。
刷題幾年,學(xué)習(xí)算法經(jīng)驗(yàn)分享
上面只是介紹了一些書籍和視頻,從另一個(gè)角度講,書籍和視頻只是一個(gè)工具,從大一學(xué)習(xí)算法到現(xiàn)在,刷了很多題,也是積累了一些經(jīng)驗(yàn),下面跟大家分享下我的經(jīng)驗(yàn)吧,請(qǐng)耐心看完,相信你會(huì)有所收獲
切勿盲目刷題:刷題前的知識(shí)積累
說實(shí)話,想要提高自己的算法,我覺得就是腳踏實(shí)地著多動(dòng)手去刷題,多刷題。
但是,如果你是小白,也就是說,你連常見的數(shù)據(jù)結(jié)構(gòu),如鏈表、樹以及常見的算法思想,如遞歸、枚舉、動(dòng)態(tài)規(guī)劃這些都沒學(xué)過,那么,我不建議你盲目瘋狂著去刷題的。而是先去找本書先去學(xué)習(xí)這些必要的知識(shí),然后再去刷題。
因?yàn)?#xff0c;如果這些基礎(chǔ)都不懂的話,估計(jì)一道題做了幾個(gè)小時(shí),然后看答案都不不懂,做題沒有任何思路,這是很難受的。久而久之,估計(jì)沒啥動(dòng)力了,我剛開始就是這樣,一道題答案看一天,然而還是不大懂,什么回溯啊,暴力啊,還不知道是啥意思。
也就是說,假如你要去諸如leetcode這些網(wǎng)站刷題,那么,你要先具備一定的基礎(chǔ),這些基礎(chǔ)包括:
1、常見數(shù)據(jù)結(jié)構(gòu):鏈表、樹(如二叉樹)。(是的,鏈表和二叉樹是重點(diǎn),圖這些可以先放著)
2、常見算法思想:貪婪法、分治法、窮舉法、動(dòng)態(tài)規(guī)劃,回溯法。(貪婪、窮舉、分治是基礎(chǔ),動(dòng)態(tài)規(guī)劃有難度,可以先放著)
以上列出來的算是最基本的吧。就是說你刷題之前,要把這些過一遍再去刷題。如果你連這些最基本的都不知道的話,那么你再刷題的過程中,會(huì)很難受的,思路也會(huì)相對(duì)比較少。
總之,千萬不要急,先把這些基本的過一遍,力求理解,再去刷題。這些知識(shí)點(diǎn),我上面已經(jīng)給你們推薦了對(duì)應(yīng)的書籍和視頻了,就不繼續(xù)說了。
所以你們千萬別指望以為自己把這些思想學(xué)完之后刷題會(huì)很牛,只有多刷題,只有多動(dòng)手實(shí)踐,你的靈敏度才會(huì)提高起來。
總結(jié)下:
提高數(shù)據(jù)結(jié)構(gòu)與算法沒啥捷徑,最好的捷徑就是多刷題。但是,刷題的前提是你要先學(xué)會(huì)一些基本的數(shù)據(jù)結(jié)構(gòu)與算法思想。
AC不是目的,我們要追求完美
如何刷題?如何對(duì)待一道算法題?
我覺得,在做題的時(shí)候,一定要追求完美,千萬不要把一道題做出來之后,提交通過,然后就趕緊下一道。我認(rèn)為這意義不大,因?yàn)橐坏李}的解法太多了,有些解法態(tài)粗糙了,我們應(yīng)該要尋找最優(yōu)的方法。
算法能力的提升和做題的數(shù)量是有一定的關(guān)系,但并不是線性關(guān)系。也就是說,在做題的時(shí)候,要力求一題多解,如果自己實(shí)在想不出來其他辦法了,可以去看看別人是怎么做的,千萬不要覺得模仿別人的做法是件丟人的事。
我做題的時(shí)候,我一看到一道題,可能第一想法就是用很粗糙的方式做,因?yàn)楹芏囝}采用暴力法都會(huì)很容易做,就是時(shí)間復(fù)雜度很高。之后,我就會(huì)慢慢思考,看看有沒其他方法來降低時(shí)間復(fù)雜度或空間復(fù)雜度。最后,我會(huì)去看一下別人的做法,當(dāng)然,并不是每道題都會(huì)這樣執(zhí)行。
衡量一道算法題的好壞無非就是時(shí)間復(fù)雜度和空間復(fù)雜度,所以我們要力求完美,就要把這兩個(gè)降到最低,令他們相輔相成。
我舉道例題吧:
問題: 一只青蛙一次可以跳上1級(jí)臺(tái)階,也可以跳上2級(jí)。求該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法?
這道題我在以前的分章分析過,不懂的可以先看下之前寫的:遞歸與動(dòng)態(tài)規(guī)劃---基礎(chǔ)篇1
方法1::暴力遞歸
這道題不難,或許你會(huì)采取下面的做法:
public static int solve(int n){if(n == 1 || n == 2){return n;}else if(n <= 0){return 0;}else{return solve(n-1) + solve(n-2);} }這種做法的時(shí)間復(fù)雜度很高,指數(shù)級(jí)別了。但是如果你提交之后僥幸通過了,然后你就接著下一道題了,那么你就要好好想想了。
方法二:空間換時(shí)間
力求完美,我們可以考慮用空間換時(shí)間:這道題如何你去仔細(xì)想一想,會(huì)發(fā)現(xiàn)有很多是重復(fù)執(zhí)行了。所以可以采取下面的方法:
//用一個(gè)HashMap來保存已經(jīng)計(jì)算過的狀態(tài) static Map<Integer,Integer> map = new HashMap(); public static int solve(int n){if(n <= 0)return 0;else if(n <= 2){return n;}else{//是否計(jì)算過if(map.containsKey(n)){return map.get(n);}else{int m = solve(n-1) + solve(n-2);map.put(n, m);return m;}} }這樣,可以大大縮短時(shí)間。也就是說,當(dāng)一道題你做了之后,發(fā)現(xiàn)時(shí)間復(fù)雜度很高,那么可以考慮下,是否有更好的方法,是否可以用空間換時(shí)間。
方法三:斐波那契數(shù)列
實(shí)際上,我們可以把空間復(fù)雜度弄的更小,不需要HashMap來保存狀態(tài):
public static int solve(int n){if(n <= 0)return 0;if(n <= 2){return n;}int f1 = 0;int f2 = 1;int sum = 0;for(int i = 1; i<= n; i++){sum = f1 + f2;f1 = f2;f2 = sum;}return sum; }我弄這道題給你們看,并不是在教你們這道題怎么做,而是有以下目的:
1、在刷題的時(shí)候,我們要力求完美。
2、我想不到這些方法啊,怎么辦?那么你就可以去看別人的做法,之后,遇到類似的題,你就會(huì)更有思路,更知道往哪個(gè)方向想。
3、可以從簡(jiǎn)單暴力入手做一道題,在考慮空間與時(shí)間之間的衡量,一點(diǎn)點(diǎn)去優(yōu)化。
挑戰(zhàn)自己,跳出舒適區(qū)
什么叫舒適區(qū)?在刷題的時(shí)候,可能有一類題是你比較懂的,你每次一看就有思路,然后半個(gè)小時(shí)就擼好代碼,提交代碼,然后通過了,然后,哇,又多刷了一道題,心里很舒服。
但是,記住,前期你可以多刷這種題練手,提升自己的樂趣,但,我還是建議你慢慢跳出舒適區(qū),去做一些自己不擅長(zhǎng)的題,并且找段時(shí)間一直刷這種題。例如,我覺得我在遞歸方面的題還是挺強(qiáng)的,
但是,我對(duì)動(dòng)態(tài)規(guī)劃的題,很菜,每次都要想好久,每次遇到這種題都有點(diǎn)害怕,沒什么信心。不過有段時(shí)間我覺得只刷動(dòng)態(tài)規(guī)劃的題,直接在 leetcode 選定專題,連續(xù)做了七八十道,剛開始很難受,
后來就慢慢知道了套路了,一道題從兩三個(gè)小時(shí)最后縮到半小時(shí),簡(jiǎn)單的十幾分鐘就搞定。感覺自己對(duì)這類型的題也不懼怕的。
所以,建議你,一定要學(xué)好跳出自己的舒適區(qū)。
推薦一些刷題網(wǎng)站
我一般是在leetcode和牛客網(wǎng)刷題,感覺挺不錯(cuò),題目難度不是很大。
在牛客網(wǎng)那里,我主要刷劍指Offer,不過那里也有個(gè)在線刷leetcode,不過里面的題量比較少。牛客網(wǎng)刷題有個(gè)非常方便的地方就是有個(gè)討論區(qū),那里會(huì)有很多大佬分享他們的解題方法,不用我們?nèi)グ俣日翌}解。所以你做完后,實(shí)在想不出,可以很方便著去看別人是怎么做的。
至于leetcode,也是大部分題目官方都有給出答案,也是個(gè)不錯(cuò)的刷題網(wǎng)站。你們可以兩個(gè)挑選一個(gè),或者兩個(gè)都刷。
當(dāng)然,還有其他刷題的網(wǎng)站,不過,其他網(wǎng)站沒刷過,不大清除如何。
至于leetcode,有中文版和英文版,個(gè)人建議英文版,英文版里面有各種大佬的解法分析。
leetcode有中文版
英文版
根據(jù)自己的興趣選。
學(xué)習(xí)一些解題技巧
說實(shí)話,有些題在你沒看別人的解法前,你好不知道有這么美妙優(yōu)雅的解法,看了之后,臥槽,居然還可以這樣。而我們?cè)谒㈩}的過程中,就要不斷累積這些技巧,當(dāng)你累計(jì)多了,你就會(huì)形成一種
神經(jīng)反應(yīng),一下子就想到了某種方法。解題技巧很多,例如數(shù)組下標(biāo)法、位圖法、雙指針等等,我自己也分享過一篇總結(jié)一些算法技巧的文章。給你舉個(gè)例子吧,有時(shí)候有些技巧真讓你大喊“臥槽”。
1、找出沒有重復(fù)的數(shù)
給你一組整型數(shù)據(jù),這些數(shù)據(jù)中,其中有一個(gè)數(shù)只出現(xiàn)了一次,其他的數(shù)都出現(xiàn)了兩次,讓你來找出一個(gè)數(shù) 。
這道題可能很多人會(huì)用一個(gè)哈希表來存儲(chǔ),每次存儲(chǔ)的時(shí)候,記錄 某個(gè)數(shù)出現(xiàn)的次數(shù),最后再遍歷哈希表,看看哪個(gè)數(shù)只出現(xiàn)了一次。這種方法的時(shí)間復(fù)雜度為 O(n),空間復(fù)雜度也為 O(n)了。
然而我想告訴你的是,采用位運(yùn)算來做,絕對(duì)高逼格!
我們剛才說過,兩個(gè)相同的數(shù)異或的結(jié)果是 0,一個(gè)數(shù)和 0 異或的結(jié)果是它本身,所以我們把這一組整型全部異或一下,例如這組數(shù)據(jù)是:1, 2, 3, 4, 5, 1, 2, 3, 4。其中 5 只出現(xiàn)了一次,其他都出現(xiàn)了兩次,把他們?nèi)慨惢蛞幌?#xff0c;結(jié)果如下:
由于異或支持交換律和結(jié)合律,所以:
1^2^3^4^5^1^2^3^4 = (1^1)^(2^2)^(3^3)^(4^4)^5= 0^0^0^0^5 = 5。
也就是說,那些出現(xiàn)了兩次的數(shù)異或之后會(huì)變成0,那個(gè)出現(xiàn)一次的數(shù),和 0 異或之后就等于它本身。就問這個(gè)解法牛不牛逼?所以代碼如下
int find(int[] arr){int tmp = arr[0];for(int i = 1;i < arr.length; i++){tmp = tmp ^ arr[i];}return tmp; }時(shí)間復(fù)雜度為 O(n),空間復(fù)雜度為 O(1),而且看起來很牛逼。
2、m的n次方
如果讓你求解 2 的 n 次方,并且不能使用系統(tǒng)自帶的 pow 函數(shù),你會(huì)怎么做呢?這還不簡(jiǎn)單,連續(xù)讓 n 個(gè) m 相乘就行了,代碼如下:
int pow(int n){int tmp = 1;for(int i = 1; i <= n; i++) {tmp = tmp * m;}return tmp; }不過你要是這樣做的話,我只能呵呵,時(shí)間復(fù)雜度為 O(n) 了,怕是小學(xué)生都會(huì)!如果讓你用位運(yùn)算來做,你會(huì)怎么做呢?
我舉個(gè)例子吧,例如 n = 13,則 n 的二進(jìn)制表示為 1101, 那么 m 的 13 次方可以拆解為:
m^1101 = m^0001 * m^0100 * m^1000。
我們可以通過 & 1和 >>1 來逐位讀取 1101,為1時(shí)將該位代表的乘數(shù)累乘到最終結(jié)果。直接看代碼吧,反而容易理解:
int pow(int n){int sum = 1;int tmp = m;while(n != 0){if(n & 1 == 1){sum *= tmp;}tmp *= tmp;n = n >> 1;}return sum; }時(shí)間復(fù)雜度近為 O(logn),而且看起來很牛逼。
給你算法技巧,當(dāng)然也可以關(guān)注我的公眾號(hào):苦逼的碼農(nóng),專注與分享算法、計(jì)算機(jī)基礎(chǔ)等相關(guān)文章,已有100多篇原創(chuàng),歡迎來撩。
推薦閱讀:一些常用的算法技巧總結(jié)
例如在刷題的時(shí)候,我們要學(xué)會(huì)巧用雙指針、數(shù)組下標(biāo)法、位運(yùn)算等等技巧來解決問題,可能會(huì)有意想不到的效果。我給你再找點(diǎn)我之前寫文章的一些例子吧:
分享一道解法巧妙的算法題
【算法技巧】位運(yùn)算裝逼指南
這是個(gè)長(zhǎng)期累積的過程,我自己也精彩在我的公眾號(hào)里分享一些解題的文章,感興趣的可以關(guān)注我的公眾號(hào):苦逼的碼農(nóng)。
再說數(shù)據(jù)結(jié)構(gòu)發(fā)重要性
前面我主要是說了我平時(shí)都是怎么學(xué)習(xí)算法的。在數(shù)據(jù)結(jié)構(gòu)方法,我只是列舉了你們一定要學(xué)習(xí)鏈表和樹(二叉堆),但這是最基本的,刷題之前要掌握的,對(duì)于數(shù)據(jù)結(jié)構(gòu),我列舉下一些比較重要的:
1、鏈表(如單向鏈表、雙向鏈表)。
2、樹(如二叉樹、平衡樹、紅黑樹)。
3、圖(如最短路徑的幾種算法)。
4、隊(duì)列、棧、矩陣。
對(duì)于這些,自己一定要?jiǎng)邮謱?shí)現(xiàn)一遍。你可以看書,也可以看視頻,新手可以先看視頻,不過前期可以看視頻,之后我建議是一定要看書。
例如對(duì)于平衡樹,可能你跟著書本的代碼實(shí)現(xiàn)之后,過陣子你就忘記,不過這不要緊,雖然你忘記了,但是如果你之前用代碼實(shí)現(xiàn)過,理解過,那么當(dāng)你再次看到的時(shí)候,會(huì)很快就記起來,很快就知道思路,而且你的抽象能力等等會(huì)在不知不覺中提升起來。之后再學(xué)習(xí)紅黑樹啊,什么數(shù)據(jù)結(jié)構(gòu)啊,都會(huì)學(xué)的很快。
最最重要
動(dòng)手去做,動(dòng)手去做,動(dòng)手去做。重要的話說三遍。
千萬不要找了一堆資源,訂好了學(xué)習(xí)計(jì)劃,我要留到某某天就來去做.....
千萬不要這樣,而是當(dāng)你激情來的時(shí)候,就馬上去干,千萬不要留到某個(gè)放假日啊什么鬼了,很多這種想法的人,最后會(huì)啥也沒做的。
也不要覺得要學(xué)習(xí)的有好多啊,不知道從哪學(xué)習(xí)起。我上面說了,可以先學(xué)習(xí)最基本的,然后刷題,刷題是一個(gè)需要長(zhǎng)期堅(jiān)持的事情,一年,兩年。在刷題的過程中,可以穿插和學(xué)習(xí)其他數(shù)據(jù)結(jié)構(gòu)。
大家也可以關(guān)注我的公眾號(hào):苦逼的碼農(nóng),在我的公眾號(hào)里,我也分享了很多與數(shù)據(jù)結(jié)構(gòu)算法相同的文章,而且也分享了很多解題技巧。目前已分析了 100 多篇原創(chuàng)文章,下面是一些我覺得
很不錯(cuò)的文章,強(qiáng)烈建議閱讀:
鏈表的重要性不言而喻,如果你把我分享的這10道題都搞懂了,那么你在鏈表方面算過關(guān)的了:
【鏈表問題】如何優(yōu)雅著反轉(zhuǎn)單鏈表
【鏈表問題】打卡6:三種方法帶你優(yōu)雅判斷回文鏈表
【鏈表問題】打卡9:將單鏈表的每K個(gè)節(jié)點(diǎn)之間逆序
【鏈表問題】刪除單鏈表中的第K個(gè)節(jié)點(diǎn)
鏈表問題】環(huán)形單鏈表約瑟夫問題
就不一道道列出來了,一共挑選了10還不錯(cuò)的文章
十道鏈表打卡匯總
我還講解了一些常用數(shù)據(jù)結(jié)構(gòu)與算法思想,每篇都通俗易懂著講解了,被各種號(hào)所轉(zhuǎn)發(fā)
1、為什么你學(xué)不會(huì)遞歸?告別遞歸,談?wù)勎业囊恍┙?jīng)驗(yàn)
2、十大排序重要性不言而喻,文章還附帶了動(dòng)畫、講解文章,代碼
必學(xué)十大經(jīng)典排序算法,看這篇就夠了(附完整代碼/動(dòng)圖/優(yōu)質(zhì)文章)(修訂版)
3、總結(jié)了刷題過程中常用的技巧,推薦閱讀:一些常用的算法技巧總結(jié)
4、用漫畫的形式講解了AVL樹:【漫畫】以后在有面試官問你AVL樹,你就把這篇文章扔給他。
5、大量圖講解了堆的各種操作:【算法與數(shù)據(jù)結(jié)構(gòu)】堆排序是什么鬼?
索性把寫的一些文章鏈接都分享一波,大家可以挑感興趣的看算法與數(shù)據(jù)結(jié)構(gòu)系列文章
也非常歡迎大家關(guān)注公眾號(hào)「苦逼的碼農(nóng)」里面已有100多篇原創(chuàng)文章,我也分享了很多視頻、書籍的資源,以及開發(fā)工具,歡迎各位的關(guān)注,第一時(shí)間閱讀我的文章。
如果你覺得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)忙,讓更多的人看到這篇文章:
1、點(diǎn)贊,讓更多的人也能看到這篇內(nèi)容(收藏不點(diǎn)贊,都是耍流氓 -_-)
2、關(guān)注我和專欄,讓我們成為長(zhǎng)期關(guān)系
3、關(guān)注公眾號(hào)「苦逼的碼農(nóng)」,主要寫算法、計(jì)算機(jī)基礎(chǔ)之類的文章,里面已有100多篇原創(chuàng)文章
大部分的數(shù)據(jù)結(jié)構(gòu)與算法文章被各種公眾號(hào)轉(zhuǎn)載相信一定能讓你有所收獲
我也分享了很多視頻、書籍的資源,以及開發(fā)工具,歡迎各位的關(guān)注我的公眾號(hào):苦逼的碼農(nóng),每周推送幾篇原創(chuàng)文章,相信 會(huì)讓你有所收獲。
轉(zhuǎn)載于:https://www.cnblogs.com/kubidemanong/p/10996134.html
總結(jié)
以上是生活随笔為你收集整理的小白一路走来,连续刷题三年,谈谈我的算法学习经验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记一次诡异的SpringMVC中拦截路径
- 下一篇: 0x57~0x59