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 数据结构之图的基本概念及存储结构

9.2 图的遍历

9.2.1 图的存储与遍历

9.2.2 图的遍历LeetCode题目 —— Find the Town Judge & Clone Graph & Keys and Rooms

9.2.3 图的遍历及路径 —— Reconstruct Itinerary & All Paths From Source to Target

9.3 最小生成树算法

9.4 最短路径算法

9.5 拓扑排序和关键路径

9.5.1 拓扑排序及LeetCode题目 —— Course Schedule II & Minimum Height Trees

9.5.2 关键路径

 

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题目

 

11 其他算法思维

 

  • 34
    点赞
  • 272
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值