當時自學數據結構和算法的 9 大工具,昨晚七夕連夜肝出來了!

小夥伴們,週末快樂!

大家都知道,數據結構和算法一直是學習編程和求職路上的一個大的攔路虎,而且不管是大廠還是小廠,在筆試和麪試時都是在重點考察數據結構+算法題。

應大家的要求,這篇文章就把自己當時在學習數據結構和算法路上私藏的一些比較好用的工具網站和資源做一波梳理和總結。爲了寫這篇,昨天七夕晚上肝到了凌晨1點半,相信看完一定會有你喜歡的!

話不多說,上菜!


Data Structure Visualization

我們都知道數據結構和算法一個比較難以掌握的原因就是很難形象地在腦海中形成一個結構化的畫面,尤其是當一些結構和算法比較複雜時,對人的想象能力有一定要求。

Data Structure Visualization這個網站則提供了一種將數據結構和算法進行可視化的功能,並開發了交互式的動畫展示,便於理解和掌握數據結構+算法。

目前該網站已經把包括像列表、堆、棧、隊列、樹、哈希表、圖、查找、排序、遞歸、動態規劃等一系列主要的數據結構和算法都進行了可視化展示,非常便於初學者理解和掌握。

我們以排序算法裏的「堆排序爲例」,這個網站可以給出完整的可視化過程,可以說非常nice了!

而且在動畫下方還可以暫停播放以及自行調節畫幅大小以及動畫速度等一些參數,非常便於學習。

地址:https://www.cs.usfca.edu/~galles/visualization/


Big-O Cheat Sheet

提到數據結構和算法的學習,一個繞不過去的問題那就是算法複雜度,包括時間複雜度分析和空間複雜度分析。

複雜度通常會使用大O記號來表示,比如冒泡排序的平均時間複雜度是O(n^2),而快速排序的平均時間複雜度則是O(nlog(n))。

除此之外還有包括像堆、棧、隊列、鏈表、跳錶、哈希、B-Tree、堆排序、選擇排序、歸併排序等等一系列數據結構和算法的複雜度最好都是能要求在理解的基礎上熟記的。

Big-O Cheat Sheet這個網站則把常見的數據結構和算法的各種複雜度進行了對比+整理+歸納,並製備了精美的表格,可供查閱+複習+背誦,一目瞭然,非常清楚。

地址:https://www.bigocheatsheet.com/


VisuAlgo

VisuAlgo這個網站也提供將常見數據結構和算法進行動態可視化的功能,並且支持中文。

VisuAlgo一個比較不錯的功能是除了可以動態演示算法之外,還可以按步驟進行動畫演示甚至是交互,並且包含了每個步驟的解釋,的確有點酷炫了。

這地方給一個歸併排序的動畫示例看看效果:

地址:https://visualgo.net/


Algorithm Visualizer

Algorithm Visualizer同樣是一款交互式算法可視化網站,並且支持Java、JavaScript、C++等主流編程語言。

該網站內容分爲三大部分,最左側可以自由選擇不同的數據結構和算法(目前支持包括二叉樹、圖、排序、查找、動歸、貪心等很多數據結構以及算法);中間部分則進行算法可視化展示以及控制檯的打印輸出;最右側用於展示算法的源碼並支持修改運行並看到效果。

地址:https://algorithm-visualizer.org/


牛客在線編程

牛客題庫裏面的在線編程模塊用於進行數據結構和算法的練習還是十分不錯的,裏面有不少題目是劍指offer上的題,這些基本都是求職前必刷的。

除了支持提交多種編程語言的代碼之外,還有一個比較好的點是可以看到大家的題解、討論、甚至是提交的代碼,而且又是中文社區網站,這樣交流和參考起來還是挺方便的。

地址:https://www.nowcoder.com/activity/oj


codeforces

codeforces別名CF,一看這名字就知道有點東西。它是一家俄羅斯的網站,而且據說最早是由一羣頗具開源精神的大學生們維護的。

codeforces的比賽系統和積分系統一直是被大家所熟知的。大家在上面用它的比賽系統還是比較多的,每個用戶都有Rating積分,很多人都在上面享受上分帶來的成就感。

除此之外,上面的題集質量也還不錯,各種難度都有,在裏面刷題也是非常不錯的選擇。

地址:http://codeforces.com/


HackerRank

HackerRank其實和上面剛介紹的codeforces有點像,主要內容也包括數據結構和算法題的題庫練習與比賽。

除此之外,HackerRank在其他相關的計算機技術主題上都有涉獵,比如像編程語言、SQL、數據庫等等。

地址:https://www.hackerrank.com/


LeetCode

LeetCode力扣我想就不用多說了。

俗話說得好,熟刷算法300遍,不會做題也會吹。沒錯,就算上面提到的所有網站都沒有興趣不想看,那這裏LeetCode上的數據結構和算法的題目基本是必刷的。

還記得我們那時候用LeetCode時才幾百道題,現在的LeetCode題量和那時相比感覺都翻了好多倍了。

一般來說,LeetCode題量慢慢上來之後,再加上多回顧多總結多發散,慢慢地對於數據結構和算法這一塊就會變得越來越有心得。沒辦法,這玩意沒啥捷徑,多思考多練習纔是關鍵。

地址(中文版):https://leetcode-cn.com/

地址(英文版):https://leetcode.com/


知名OJ

除了上面這些網站之外,還有一些口碑一直不錯的高校OJ系統有興趣的也可以看一看。

  • 北大OJ:

地址:http://poj.org/problemlist

  • 中科大OJ:

地址:http://acm.ustc.edu.cn/ustcoj/

  • 杭電OJ:

地址:https://acm.hdu.edu.cn/

  • 哈工大OJ

地址:http://acm.hit.edu.cn/


寫在最後

好了,今天的分享就到這裏了,希望這些學習和練習數據結構+算法的工具和資源能夠對大家有所幫助。大家有好的推薦也歡迎分享交流呀。

整理不易,歡迎支持。

週末快樂!我們下篇見!


點擊關注程序員吳師兄回覆 888 ,領取免費LeetCode 刷題筆記,圖解劍指 Offer 電子書正在加班加點製作中。

本文分享自微信公衆號 - 五分鐘學算法(CXYxiaowu)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章