閒著沒事?你可以這樣學學演算法

2022-01-30 21:34:32 字數 1700 閱讀 4782

對於很多碼農來說,演算法總是顯得有那麼一點高深莫測,好像是一道難以跨越的坎。造成這種現象的原因,一是因為我們對演算法的了解和對自己能力的了解不夠,還沒入門就被嚇退了,另外乙個原因是,大部分人實際工作中很少用到演算法,很多演算法都已經被封裝到函式庫或介面裡面了,只需要呼叫就行,而為了能早點完成任務,我們一般都不會去想介面裡面的演算法如何實現,只管呼叫來完成任務,順利交差就萬事大吉了。

「不管用什麼方法,能夠完成任務就可以」,其實我覺得這種想法也是可以的,畢竟我們搞技術的都比較崇尚實用主義。但是如果我們懂得背後的原理,可能心裡會舒坦一些,而且在使用別人介面達不到理想的效能要求時,可以分析是否是介面的實現有問題,從而懂得去選擇其他實現版本或者自己動手寫,而自己動手寫,就必須懂演算法了。此外,很多大公司在面試中,往往也會考你演算法,很多很多人都倒在演算法這個環節上,屍骨遍野。這就是作為碼農,即使你的工作不是演算法研究,也需要了解一些基礎演算法的原因。

基礎演算法,我覺得對於大部分程式設計師來說,通過一定時間的練習,是可以學會的。了解了這一點,我們才不至於很容易被演算法嚇退。如果你是個演算法小白,現在要開始學習演算法了,可是又不知道從何學起,那麼我這裡給你一些建議。

首先,去找大學的資料結構和演算法教程來看。我為什麼不推薦很多人都知道的大部頭《演算法導論》呢?我是怕這大部頭又把你嚇退了,所以還是先從簡單一點的開始吧。資料結構和演算法是分不開的,一般來說,每種演算法都是為某種資料結構服務的,不同的資料結構,往往需要使用不同的演算法。資料結構,可以理解為,我們存放一堆資料時,要以某種結構形式存放,而演算法,就是要從這堆資料中尋找到你想要的那一小坨資料的方法,而衡量演算法優劣的,是空間和時間複雜度,也就是如果你能使用更少的時間和更少的空間(比如計算時需要使用的記憶體)就能得到答案,那麼這個演算法就是更好的。

假設你已經學過教材了,練習過教材上的一些演算法題目,那麼現在你可以嘗試去刷刷leetcode上的題目了。leetcode上有很多演算法題,按難度分為初級、中級等,練習時可以從簡單的到難一點的,這樣容易讓你練習的過程中保持信心。很多公司在面試演算法題時,也是直接使用leetcode上的題目。我本人曾經在遠端面試一家不錯的外企時,被要求線上完成3道演算法題,因為當時已經有比較長時間不接觸演算法題目了,所以沒能很好完成,也錯失了一次機會。然後第二天,我就去leetcode上看題目,恰巧看到了這家外企出的演算法題目,我再嘗試去解決,沒想到順利把這些題目完成了。如果我在刷這幾道題目之後接受那家外企的線上演算法題筆試,也許offer早就收入囊中了。現在,你應該知道,想要獲得好的機會,為什麼刷刷演算法題可能也是必要的原因了。

除了leetcode,還有乙個我推薦你學習演算法的**,這個**叫做:geeksforgeeks,隨便搜下就找到了。這**上面有不少巨頭公司的演算法題目,包括微軟、谷歌、亞馬遜、facebook等等,並且給出了解法,同時有不少面試者分享他們去這些公司面試後的面經,你可以參考參考。我曾經在這個**上呆蠻長一段時間,現在很久沒上去看了,寫這篇文章時,我再開啟這個**,已經很難開啟了,貌似需要你會輕功才能順暢訪問,哎,我就不說得太直白了。

以上提到的那些學習資料或**資源,在你學習時,可能也會覺得學是學了,可惜缺乏使用場景,還是無法感受到這些演算法的威力所在。現在也有一些付費的演算法專欄,號稱根據使用場景帶你學習演算法,讓你真正明白演算法是如何在實際專案中使用的。因為我沒有訂閱這個專欄,目前也不想免費給他們做廣告,因此還是先不提了,如果需要這種學習方式,可以自己去搜尋了解下這些專欄,或者私信我,我會告訴你去**訂閱。

作為程式設計師,如果你還有蠻多閒暇時間,除了打遊戲不知道幹嘛的,建議這樣去學學演算法吧。不過提醒一下,我這些建議主要是給沒有演算法基礎或者演算法基礎薄弱的技術人,高手路過時,還望理解,如能笑納,本人將倍感榮幸!

閒著沒事,做個chrome瀏覽器外掛程式,適合初學者

時光偷走的,永遠都是我們眼皮底下看不見的珍貴。使用外掛程式前 使用外掛程式後 鮮花 閒話 這個 的不加水印的連線被儲存在,的data image屬性中。那麼就直接替換src的位址就ok了。外掛程式資料夾結構 主要檔案 manifest.json commands description opens ...

幽默的經濟學原理 其實經濟學可以這樣學

from a.一農戶在殺雞前的晚上餵雞,不經意地說 快吃吧,這是你最後一頓!第二日,見雞已躺倒並留遺書 爺已吃老鼠藥,你們別想吃爺了,爺他媽也不是好惹的。當對手知道了你的決定之後,就能做出對自己最有利的決定。納什均衡理論 所以保密 資訊保安很重要 b.魚說 我時時刻刻睜開眼睛,就是為了能讓你永遠在我...

如果你遇到這樣的男人,恭喜你可以嫁人了。

有這樣一種男人,碰到了就一定要嫁給他 朦朧醒來回你資訊。半夜裡接你的 告訴你 到家了就發訊息給他。你半夜睡不著發訊息給他,他會陪你聊天。睡得比你遲一點,醒來早一點。雨天,同撐一把傘,他衣服 的一半是溼的。不論走到 都一直拉著你的手。願意吃你吃不下的東西。從來不遲到,你遲到他不會生氣。不論去 他都會來...