python數據結構與算法學習路線及系列文章彙總(持續更新。。)

雖然是用python搞機器學習的大項目,還是要從零開始學習數據結構那一套理論。不知不覺數據結構及算法系列的學習及LeetCode刷題已經一大堆,現對此彙總。

如下是一套比較合理的完整的學習路徑:

1)數據結構與算法的理論,包括複雜度的思想,從線性表開始(鏈表,棧和隊列),然後是數組和字符串的初級理論和題目(雙指針);查找算法中深刻理解二分查找及哈希查找。

2)接下來打算學習樹及二叉樹相關姿勢,樹是最重要的數據結構,基礎是遍歷運算等;然後二叉搜索樹、平衡二叉樹等的基本知識,屬於最重要的查找算法;

3)然後是排序的各種方法,需瞭解其原理和實現,複雜度及穩定性,可做的題目並不多;

至此基礎知識已打好,可以應對基本的面試題目了。

4)進一步加深學習,可以學習動態規劃/貪心/回溯算法思想,此時可以解決LeetCode許多難題了,DP在LeetCode中淨是難題;

5)最後學習圖算法及一些高級的問題,圖算法在各教材中都會介紹,主要是存儲遍歷、連通性、最短路徑、最大生成樹等問題,也可以更深入的學習。

6)學習一些特殊的、高級的數據結構及算法,閱讀暢銷的算法設計相關書籍學習一些思想方法和算法的trick。

 

1  鏈表

1.1 python數據結構之鏈表——功能實現

1.2 python數據結構之鏈表——倒數第k結點及鏈表合併

1.3 python數據結構之鏈表——鏈表右移/鏈表分割/鏈表逆序

1.4 python數據結構之鏈表——移除重複項及帶隨機指針的鏈表複製

1.5 python數據結構之鏈表——帶環鏈表及交叉鏈表(雙指針法)

1.6 python數據結構之雙向鏈表/循環鏈表——以OrderedDict數據結構爲例

2  棧和隊列

2.1 python數據結構之棧和隊列——功能實現

2.2.1  python數據結構之棧——應用(1)括號匹配及後綴表達式

2.2.2  python數據結構之棧——應用(2)中綴表達式計算與函數調用棧

2.2.3  python數據結構之棧——應用(3)Leetcode題目解析

2.3 python數據結構之隊列——應用

3  數組

3.1  雙指針

3.1.1  python數組雙指針算法1——求和問題(LeetCode 2sum & 3sum & 4sum)

3.1.2 python數組雙指針算法2——元素交換(LeetCode Remove Duplicates from Sorted Array & Remove Element)

3.1.3 python數組雙指針算法3——滑動窗口(LeetCode Subarray Product Less Than K & Container With Most Water)

3.2  其他

3.2.1 LeetCode數組類題目選做(1)—— First Missing Positive & Majority Element & Product of Array Except Self

3.2.2 LeetCode數組類題目選做(2)—— Spiral Matrix & Rotate Image & Set Matrix Zeroes

4  字符串

4.1 python數據結構之串——概述和基本算法

4.2 基礎題目/字符串解析

4.2.1 LeetCode字符串類題目選做(1) —— Roman to Integer & Text Justification

4.2.2 LeetCode字符串類題目選做(2)—— Length of Last Word & Reverse Words in a String

4.2.3 LeetCode字符串類題目選做(3) —— String to Integer (atoi) & Integer to English Words

4.3 LeetCode字符串題目選做之迴文——Valid Palindrome & Shortest Palindrome

4.4 雙指針/哈希等其他應用

4.4.1 python 字符串雙指針/哈希算法1—— Reverse Vowels of a String & Longest Substring Without Repeating Characters

4.4.2 python 字符串雙指針/哈希算法2 —— Substring with Concatenation of All Words & Group Anagrams

4.4.3 python 字符串雙指針/哈希算法3 —— Minimum Window Substring & Smallest Range

 

5  遞歸

5.1 python數據結構與算法之算法思想概述

5.2 遞歸算法及設計思想

6 查找

6.1 查找算法概述

6.2.1 python二分查找算法及LeetCode題目(1) —— Find First and Last Position & Find Peak Element

6.2.2 python二分查找算法及LeetCode題目(2)之旋轉的數組 —— Search in Rotated Sorted Array

6.2.3 python二分查找算法及LeetCode題目(3)之二維數組 —— Search a 2D Matrix

 

7 樹

7.1 樹及二叉樹的概念及存儲結構

7.2 二叉樹的基本運算及遍歷的python實現

7.3.1 二叉樹遍歷的應用及LeetCode題目解析(1)

7.3.2 python 二叉樹層次遍歷應用及LeetCode題目解析(2)

7.4.1 python二叉樹路徑問題及LeetCode題目解析(1)

7.4.2 python二叉樹路徑問題及LeetCode題目解析(2)

7.5 二叉查找樹(BST)及平衡二叉樹(AVL)的概念及基本運算

7.6.1 (python)BST LeetCode題目 —— Minimum Absolute Difference in BST & Convert BST to Greater Tree

7.6.2 (python)AVL LeetCode題目 及 AVL結點插入操作詳解

7.6.3 (python)BST LeetCode題目 —— Delete Node in a BST & Recover Binary Search Tree

7.7.1 外查找之 B-tree、B+tree 認識

7.7.2 (轉載) B樹、B+樹、B*樹(1)

7.7.3 (轉載) B樹、B+樹、B*樹(2)

7.8.1 帶你學習紅黑樹(1)

7.9 哈夫曼樹(Huffman Tree)

7.10.1 優先隊列及堆

7.10.2 (python)堆的應用及Leetcode題目解析

7.11.1 Trie 樹(字典樹)簡介與實現

7.12.1 線段樹原理及應用(上)

 

8 排序

8.1.1 排序算法概述及python基本實現(上)

8.1.2 排序算法概述及python基本實現(下)

8.2.1 (python)排序算法之鏈表排序LeetCode題目(1) —— Sort List & Merge k Sorted Lists

8.2.2 (python)排序算法及LeetCode題目(2) —— Insert Interval & Contains Duplicate III & Wiggle Sort II

8.2.3 python排序LeetCode題目(3) —— K Pairs with Smallest Sums & Kth Smallest Element in a Sorted Matrix

 

9 圖

9.1 數據結構之圖的基本概念及存儲結構

 

10 動態規劃及貪心算法

10. 1 動態規劃及貪心算法概述

10.2 動態規劃算法套路及空間優化 —— Climbing Stairs & Unique Paths

10.3 動態規劃數組類題目

10.3.1 (python) 動態規劃數組類LeetCode題目 —— Minimum Path Sum & Triangle & Maximum Product Subarray

10.3.2 (python) 動態規劃數組類LeetCode題目 —— Decode Ways & Range Sum Query 2D

10.3.3 (python) 動態規劃數組類LeetCode題目 —— Dungeon Game & Frog Jump

10.4 動態規劃專題應用

10.4.1 (python) 動態規劃專題之最長遞增子序列 —— Longest Increasing Subsequence & Russian Doll Envelopes

 10.4.2 (python) 動態規劃專題之換零錢 —— Coin Change & Perfect Squares

10.4.3 (python) 動態規劃專題之股票買賣 —— Best Time to Buy and Sell Stock

10.5 動態規劃字符串類題目

10.5.1 (python) 動態規劃字符串類LeetCode題目 —— Edit Distance & Regular Expression Matching

10.5.2 (python) 動態規劃字符串類LeetCode題目 —— Interleaving String & Distinct Subsequences

10.6 貪心算法詳解及LeetCode題目

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