摘要:在學習的過程中,我更理解吳軍老師說過的一句話,大體是這個意思:“ 不要太相信一萬小時定律,即使你付出了一萬小時,你也可能沒有成爲什麼牛人。如果你也想跟隨覃超老師學習算法,和優秀的小夥伴一起提高自己的數據結構和算法能力,可以參加第 6 期算法訓練營。

大家好,我是欒先生,來自 山東,畢業於哈爾濱工業大學,在運維崗位上工作了8年以上,不過目前已經裸辭,決定年後再找工作。

下定決心,重學數據結構與算法

其實觸發我要再學一遍數據結構的是一個比我厲害的程序員,一次和他聊技術時,他突然認真的說, 你要再學學數據結構 好在我臉皮厚,朋友的話我記下了。真實的指出我們不足之處的朋友不多,好朋友有些時候因爲擔心直接指出我們的弱項而傷害到我們,恐怕就不說了,我們也就無法全面的認識自己,一直接觸阿諛奉承的人非常危險。

我先是買了兩本書,而後也看了兩所大學的《數據結構》,因爲感覺老師講的好,我到一個老師的網站上嘗試刷題,哎呀! 屢戰屢敗,鏖戰一個多月,身心俱疲 我猜估計只有出題的老師會做,其他人估計和我一樣。(內心os:不要告訴我,大家都會,我受不了...)

因此我在想,如果有個人,自身不是某大學的老師,而是某公司的技術牛人,他能做對這些題目麼?我如果能看到,牛人揮刀砍題,手起刀落這樣的場景,那才叫爽。我盼望着,直到一個好朋友告訴我,極客大學有一個算法訓練營...

我自己啃了幾本數據結構的書,書是很好的,可是我感覺吸收得一般,所以當看到有這個訓練營時立即買了,並立即在極客時間裏面搜索到了覃超老師的視頻課,買下,早點熱身。好的開始是成功的一半,越早見識高手,越少走彎路。 愚公移山精神很好,但早學挖掘機可能更好。

有些話,我早就聽說了,感覺自己好像理解了,但經過某些經歷後,你可能理解得更深刻了,並用它們指導以後的生活,這可能就是收穫吧。

我參加算法訓練營的初衷:

第一個,爲了漲見識,想看一下 覃超老師到底有多牛? 爲啥牛?

第二個,明知遞歸函數很重要,但是每次自己寫起來,都感覺“反人類”,遞歸樹畫着畫着很煩躁,寫着寫着想睡覺,我想看看覃超老師,是不是他也不會寫?(壞笑)

第三,動態規劃,神神祕祕的,感覺根本找不到規律,也搞不清楚什麼情況下,應該用動態規劃解決。

算法的種子逐漸萌芽

現在:

第一,達到初衷,真是遇到好老師了,掏心掏肺的講解:壓縮記憶法、五毒神掌等,真的漲了見識, 老師不僅教了套路,還直接給了木人樁。

第二,講到遞歸函數的時候,老師手裏有模板,奧利給!我這鑽木取火,老師直接遞過來打火機。

第三,講到動態規劃的時候,記住了老師的幾句話,其實,它和遞歸沒什麼區別;遞推加記憶化;何時使用呢?是否存在某種最優子結構。升維、降維、狀態壓縮,原來如此。但動態規劃的某些題的定義狀態,確實需要一些“天分”,其實也就是抽象思維能力,我們不知道天才們當時是怎麼想出來的,先記住吧。

我真實地感受到了,老師腦袋裏這些知識的樣子,也感受到了一粒數據結構與算法的種子在我的腦袋裏面逐漸萌芽。

數據結構之樹開枝散葉

在學習的過程中,我更理解吳軍老師說過的一句話,大體是這個意思:“ 不要太相信一萬小時定律,即使你付出了一萬小時,你也可能沒有成爲什麼牛人。 ” 爲什麼?其實,那是在做低水平的重複。舉個例子吧,可能你一直都在一樓忙碌,根本不知道還有二樓、三樓、更高的樓層,好比你根本沒有見過一流的人如何做這個事情。

一流的人,可能把二流的事做到一流。 參加訓練營,我的感受是比自己一點一點啃要好得多,不光是快,最重要的是感覺有條線,把知識串起來了。用池大的話解釋,就是系統化,感覺到了這些東西是一個整體了。我也理解了覃超老師引用埃隆馬斯克的那句話, 知識最終會像一顆小樹,長在腦子裏。 比如先理解了單鏈表,而後理解二叉樹、多叉樹,最後是圖;再有就是從理解遞歸,到加上記憶化,到理解動態規劃,而後是貪心算法,貪心算法只能算是動態規劃的一個特殊形式,只是動態規劃這個樹枝上的一片小葉子。腦子裏知識零零散散的不是好事,我們的鑰匙都串在一起,不是麼?

下面是我的小樹,可能有些錯誤,比如,你可能感覺布隆過濾器就是Hash,而不是位運算;或者優先級隊列,就應該屬於堆,而不是隊列。這很好,“ Talk is cheap, show me the code”。

查漏補缺,填補盲點

在訓練的過程中我體會到好多東西,學好數據結構與算法真的非常有用。我還是想用 約瑟夫下船問題 ,來和大家分享我那時候的感受。

 

一開始我的思維一直像 老式的打字機 :人站成一行,我像個執法者,從頭走到尾數着數,把倒黴的人推入大海,而後再次返回,從頭到尾再來。這樣子想,當寫程序的時候,需要時刻關注好幾個維度,比如原來這個位置的人是否已經推入大海?是否已經是隊伍末尾了?已經推下去幾個等等。我是閱讀一段別人寫的變量沒有註釋的代碼,我太難了,終於把它的註釋補上去,理解了。擦汗!

而後用必應一搜,看到了用隊列這個數據結構,簡潔的代碼,就8行,邏輯非常清晰。

哇咔咔,給你個場景自己體會吧,我用腿爬到了 66 樓,一推門看見同事,他們說:“你剛走就來電了,可以坐電梯上來了。”

很多人都無數次說過: 程序=數據結構+算法。 我想說的是:不學習它,你就有一些盲維,比如字典樹,用它能很好解決一類問題,如果你連字典樹的概念都不知道,遇到相關問題肯定解決不好。

最後我想說: 不學好數據結構和算法,就像拿着個有漏洞的桶去提水,事倍功半一輩子呀!

我想對師弟師妹們說

首先,身處一個人工智能時代,我們必須多瞭解一些計算機知識。打個比方,如果是蒸汽機時代,你懂得蒸汽機的原理,哪怕只是維修蒸汽機,估計人生也很精彩,很多人求着你幫忙,你掌握高科技,人們高看你;反觀當下,喬布斯先生曾說過, 人人都應該學習編程,最好用一年的時間學, 這是肺腑之言呀!因爲我們離不開計算機,其實手機就是一臺計算機,更別提在大公司工作,人手一臺電腦, 我們要搞懂它、馴化它、駕馭它,讓它會變成一個得力的助手。 大雄同學菜菜的,可是有了哆啦A夢的幫助之後呢?

其次,學習的過程是不是很痛苦?我想用吳軍老師的話來與你共勉: 學習的過程可能辛苦,但一次一次,當我看懂了優秀的代碼,理解了先賢的智慧,拍着大腿,想說歎爲觀止的時刻,和在某些旅遊景點的感受,幾乎是一樣的。 我曾在黃果樹瀑布下,張着嘴。人人都愛旅遊,累麼?累,快樂麼?快樂。其實,我們需要的是,那些經歷,那些場景,那些感受。

分享一下我的記憶心法,我比較認同的一句話: 任何學習說到最後,都是記憶化的過程。 關於記憶,分享三點:

1、記不住的主要原因是,記多了!  每次儘量控制在3個。

2、文字,圖片,視頻,記憶深度不斷加深,能看視頻的看視頻。

3、重複的次數,要足夠多; 還有,體驗越深越難忘記,不信,捅個馬蜂窩試試。

再次,說一下課程,覃超老師和極客大學團隊精心打磨、不斷迭代的課程,貫徹了授人以漁的思想,讓我受益很多。 我們可能內心一直盼望,一參加工作就遇到一個好公司,身邊一堆技術大牛的同事,而且他們都很有耐心,一年內把小白培育成才; 而現實是,我們需要提升自己的能力,爭取能夠分辨出哪些人是高手,哪些公司是好公司。 否則,你有多大的概率,在最好的公司找了個最菜的人拜師了,悲劇呀! 好公司一定有好產品,這個算法訓練營,我參加了,整體下來我感覺確實超值。 覃超老師是高手麼? 能把很多的知識壓縮爲幾個字。 功力如何? 你親自試一試就知道了。 另外,他把他被微軟面試官咔嚓的事情都倒出來,給人無比的真實和親近感,不是高高在上的老師,而是就像站在你身邊的戰友,隨時準備讓你踩着衝出戰壕。

最後,囉嗦幾句,其實這個課提升了我的格局。還是打個比方吧:連長說今晚摸鬼子的炮樓,我舉手,連長說:“你行麼?”我把匕首咬在嘴裏,麻利兒地把布條纏到了鞋上,連長一看,最重要的基本要領知道,靠譜。我不再關注哪個員工不努力提升,而是關注自己給牛人做助手是否合格?這裏引用一句話吧, 秦朝李斯《諫逐客書》: 是以泰山不讓土壤,故能成其大; 河海不擇細流,故能就其深; 王者不卻衆庶,故能明其德。

早鳥優惠中丨第 6 期算法訓練營

如果你也想跟隨覃超老師學習算法,和優秀的小夥伴一起提高自己的數據結構和算法能力,可以參加第 6 期算法訓練營。本期算法訓練營不限地域,內容從低到高、由淺入深,涵蓋所有核心算法知識精講、解題思路、實戰結合。

:point_up_2: 掃碼報名 

僅限 前 50 人 有效!先到先得!

:point_down: 點擊閱讀原文,查看算法訓練營 課程大綱 哦~

相關文章