如果你想入門算法,那么我這篇文章也許可以幫到你。
oj網站有這么多,當然還有其他的。我當初是在hdu上面刷的,不要問我為什么,問就是當時我也是一個新手,懵懵懂懂就刷起來了。點這里可以進入這個網站https://vjudge.net/
我只在hdu上刷其他的沒刷過。讓我建議的話也是建議你刷hdu,差不多真的。
先給大家看一下我oj網站上的記錄,這是杭電刷題網站,我不是杭電的,我是一個非常非常普通的本科生。鏈接在這http://acm.hdu.edu.cn/
很水的數據提交錯誤(WA)的次數太多,但我確確實實是憑借它比大多數人都快速的入門了算法。這里題目不多而且很多是水題,刷水題也有不少好處能讓你在學算法題的路上沒那么枯燥。 大概有哪些算法呢?這里列出一些我當時做的題(有些不在上面)。題目都是非常非常基礎的題目屬於入門級別的基本上沒有什么變形,可以說相當於模板了。
接下來分享一下當時我是怎么刷這些題的(下面的一些數字要是看着比較煩的話可以不用太關注),我沒看任何人的推薦路線去刷這些題(那時候我也不知道還有刷題路線這些東西啊,純新手對一切一無所知)。登陸進去hdu一般情況下是在第11頁開始的(現在好像又從第一頁開始了,從哪里開始不要緊),也就是題號是2000,當時懵懵懂懂從2000一直刷到了2058。越到后面感覺有些題目難度就上來了(當然這是對我來說的)。有些題即使是看了很多的題解我還是不會,無奈只能跳過。
一路刷到2058題后,我發現題號是從1000開始的,前面還有好多題沒有刷就跳去第一頁刷題。所以后面我就從1000開始刷了。不過這次我學聰明了,我沒有全部都刷。我只刷一些比較多人刷的題目,這里強烈推薦提交量超過30000的記住是提交量不是通過量。刷這些提交量通過三萬的理由如下,這些提交量三萬以上的題目基本上道道是算法精品,是非常基礎的算法題,可以當作模板。我一路從1000刷到了2000左右(后面就沒怎么刷了)。基本上所有的30000通過量以上的題目都給刷了一遍。刷完感覺自己好像變強了,最主要的是自己的思維邏輯提升上來了_。
其實刷20000提交量以上也是可以的,那些應該也是一些算法題,有實力的可以這樣子做。
如果你問我沒有基礎去刷這些題會不會困難,額確實是比較難,不過難也就難一個月左右吧。我刷hdu大概刷了一個月(期間痛苦並快樂着),就刷完上面所列的那些題目了。刷這些題的時候我才剛剛開始知道算法大概是個什么東西。我的基礎只有大一刷的一些基礎C語言題目,期間思維的轉變很關鍵。開始基本上很多題目都是找百度的。每道題目看了好多個人的題解,大多數時候看的一臉懵逼,不過還是慢慢堅持下來並且適應了。
如果你問我一個月夠了嗎的話。一個月是真的夠了,只要你吧一天的主任務放在刷題上真的可以入門這些非常有用的算法,從此飛黃騰達(其實是掉進了坑哈哈,不過為了錢一切都值得)。如果你再肝一點半個月估計也可以搞定。
這里再分享一下我看題解的一些小技巧。開始刷到算法題(那時候並不知道這些題是算法題)是真的痛不欲生,百度題解一臉懵逼,看了好多題解還是不太懂這道題,不過看多一點題解就是我要分享給你的小技巧。剛學的算法題,隨便找一些自己認為比較好的(推薦代碼簡潔的),然后就去認真的看,看不懂沒關系一遍很難看懂的(對未知感到恐懼很正常,但心態放平不要畏難真的很重要,這不是雞湯,不少人應該親生經歷過),可以不用繼續看他的題解,去看其他人的題解,認真看個幾個人的題解,慢慢的你就會對這個算法有一個大概的了解,看着看着你就會豁然開朗,感覺看的題解差不多的時候,就從中挑一個自己認為比較簡潔的代碼去看(記得多問幾個為什么),一定要每一個細節都搞明白,為什么這里是這樣子,那里是那樣子。多動手在紙上模擬(這樣子不容易開小差)。
曾國藩說過這樣一句話“大處着眼,小處着手;群居守口,獨居守心”。我的刷題方法似乎在一定程度上吻合了“大處着眼,小處着手”這八字真言哈哈。這八個字放在哪其實都是可以的。喜歡的話可以關注一下我的公眾號玩編程地碼農啊。
如果你問我現在開始學的話晚了嗎?你能看到我這篇文章,那就說明不晚,至少你正在找一個讓自己變優秀的理由。我沒有理由給你,但我用我的實際行動告訴你,只要你堅持一個月,你一定會變得更優秀。相信你學完這些算法會找到讓自己變優秀的理由(哪怕是為了錢也好)。
如果你不喜歡刷題,想快速入門算法我覺得是不太可能的,學算法一個比較好的辦法就是持之以恆的刷題。
這些題量多嗎?真心不多,堅持一個月,即使是你沒有任何的算法基礎,只要你會一門語言,就ok啦。當時我是大一第一學期學了C語言,寒假邊學C++邊刷hdu的。
這篇文章也是一時心血來潮,想着把自己的經歷讓大家看見,希望大家能少走點彎路。
最后再談一下我學了這些算法之后的一些成效,這些算法學完之后不久,我就陸陸續續去學習其他數據結構與算法了,例如什么紅黑樹啊,B樹啊,跳表啊之類的。新的數據結構與算法難度變大了,但是我花的時間卻不多,很多知識都能夠不費太多精力就看懂,這可能是我刷題之后思維的提升和能力的提升的一種表現。相信我花一個月去刷刷題目,刷完之后你會有意向不大的收獲。
試着逼迫一下自己,一切都是從這里開始。
如果覺得有收獲,不妨花個幾秒鍾點個贊,歡迎關注我的公眾號玩編程地碼農,目前專注寫數據結構於算法相關知識。