
算法和數據結構知識點圖
首先,了解算法和數據結構有哪些知識點,在后面的學習中有 大局觀,對學習和刷題十分有幫助。
下面是我花了一天時間花的算法和數據結構的知識結構,大家可以看看。

后面是為大家 精心挑選的LeetCode題單,並根據題目知識點的類型分好了類別,大家可以根據每個知識點,進行有針對性的刷題。
數據結構
數組&雙指針
鏈表
隊列&棧
哈希表
二叉樹
二叉搜索樹
算法
模擬
貪心
- LeetCode 11. 盛最多水的容器
- LeetCode 714. 買賣股票的最佳時機含手續費
- LeetCode 122. 買賣股票的最佳時機 II
- LeetCode 55. 跳躍游戲
- LeetCode 309. 最佳買賣股票時機含冷凍期
- LeetCode 406. 根據身高重建隊列
二分
遞歸&回溯
深度優先搜索DFS
寬度優先搜索BFS
分治
排序算法
Manacher算法
字典樹Trie
動態規划
最短路算法
最小生成樹
拓撲排序
並查集
還在不斷完善中。
我把學習 算法和數據結構和計算機核心的書籍 都下面整理好了獲取,在學習計算機的路上肯定能用到,身邊的同學都在看。
書單
https://mp.weixin.qq.com/s/vtIjAQQdEik2A7NCIamSqA

下面講一下如何刷題。

如何正確的做一道題
- 從簡入手: 先從簡單暴力(時間復雜度高)的方法入手。
- 優化: 思考如何在第一步的基礎上,如何優化算法,降低時間復雜度。
- 構思代碼: 有了以上兩步,我們此時應該已經有了一個正確的想法,此時我們應該構思代碼,有那幾部分,每部分實現什么功能,代碼怎么寫。而不是直接悶頭去寫代碼,因為很多時候沒想清楚,直接去寫代碼,會導致寫了一半發現思路不對,寫的代碼都是錯誤的。
- 寫代碼: 實現第三步代碼。
- (Debug): 如果我們的題目沒有通過測試,應該檢查代碼是不是有bug、思路對不對等。
- 總結與反思: 題目通過了,我們應該總結一下這道題考察的知識點、切入的角度、同類型的題目等,同時思考有沒有更優的辦法。
做到以上幾點,一道題學習的就很透了,遇到同類型的題目可以舉一反三啦。
最后
我是編程熊,字節跳動、曠視科技前員工、ACM金牌選手。
微信搜索【一只編程熊】,獲取 學習資源、面試、內推交流群。

