首页 > 图书中心 > 算法设计与分析基础(Python语言描述)(微课视频版)

目录

目录

扫一扫

源码下载

第1章算法入门——概论/

1.1算法概述/

1.1.1什么是算法/

1.1.2算法的描述/

1.1.3算法设计的基本步骤/

1.2算法分析/

1.2.1算法的时间复杂度分析/

1.2.2算法的空间复杂度分析/

习题1/

第2章工之利器——常用数据结构及其应用/

2.1线性表——数组/

2.1.1线性表的定义/

2.1.2Python列表/

2.1.3列表元素的排序/

2.1.4列表的复制/

2.1.5实战——移除元素(LeetCode27★)/

2.2线性表——链表/

2.2.1单链表/

2.2.2实战——反转链表(LeetCode206★)/

2.3字符串/

2.3.1字符串的定义/

2.3.2Python中的字符串/

2.3.3实战——最大重复子字符串(LeetCode1668★)/

2.4栈/

2.4.1栈的定义/

2.4.2用Python列表实现栈/

2.4.3实战——使括号有效的最少添加

(LeetCode921★★)/

2.5双端队列/

2.5.1双端队列的定义/

2.5.2Python中的双端队列/

2.5.3实战——滑动窗口中的最大值

(LeetCode239★★★)/

2.6队列/

2.6.1队列的定义/

2.6.2Python中的队列/

2.6.3实战——无法吃午餐的学生的数量

(LeetCode1700★)/

2.7优先队列/

2.7.1优先队列的定义/

2.7.2Python中的优先队列/

2.7.3实战——数据流中第k大的元素

(LeetCode703★)/

2.8树和二叉树/

2.8.1树/

2.8.2二叉树/

2.8.3实战——二叉树的完全性检验

(LeetCode958★★)/

2.9图/

2.9.1图的基础/

2.9.2实战——课程表(LeetCode207★★)/

2.10并查集/

2.10.1并查集的基础/

2.10.2实战——省份的数量(LeetCode547★★)/

2.11二叉排序树和平衡二叉树/

2.11.1二叉排序树/

2.11.2平衡二叉树/

2.11.3红黑树/

2.11.4Python中的有序类/

2.11.5实战——前k个高频单词(LeetCode692★★)/

2.12哈希表/

2.12.1哈希表的基础/

2.12.2Python中的哈希表/

2.12.3实战——多数元素(LeetCode169★)/

习题2/

第3章必备技能——基本算法设计方法/

3.1穷举法/

3.1.1穷举法概述/

3.1.2最大连续子序列和/

3.1.3实战——最大子序列和(LeetCode53★)/

3.2归纳法/

3.2.1归纳法概述/

3.2.2直接插入排序/

3.2.3实战——不同路径(LeetCode62★★)/

3.2.4猴子摘桃子问题/

3.3迭代法/

3.3.1迭代法概述/

3.3.2简单选择排序/

3.3.3实战——多数元素(LeetCode169★)/

3.3.4求幂集/

3.3.5实战——子集(LeetCode78★★)/

3.4递归法/

3.4.1递归法概述/

3.4.2冒泡排序/

3.4.3求全排列/

3.4.4实战——字符串解码(LeetCode394★★)/

3.5递推式计算/

3.5.1直接展开法/

3.5.2递归树方法/

3.5.3主方法/

习题3/

第4章分而治之——分治法/

4.1分治法概述/

4.1.1什么是分治法/

4.1.2分治法算法的框架/

4.2求解排序问题/

4.2.1快速排序/

4.2.2实战——最小的k个数(面试题17.14★★)/

4.2.3归并排序/

4.2.4实战——数组中的逆序对(剑指Offer51★★★)/

4.3求解查找问题/

4.3.1查找最大和次大元素/

4.3.2二分查找/

4.3.3二分查找的扩展/

4.3.4实战——寻找峰值(LeetCode162★★)/

4.3.5查找两个等长有序序列的中位数/

4.3.6查找假币问题/

4.4求解组合问题/

4.4.1最大连续子序列的和/

4.4.2实战——最大子序列的和(LeetCode53★)/

4.4.3实战——多数元素(LeetCode169★)/

4.4.4实战——三数之和(LeetCode15★★)/

4.4.5求最近点对距离/

习题4/

第5章走不下去就回退——回溯法/

5.1回溯法概述/

5.1.1问题的解空间/

5.1.2什么是回溯法/

5.1.3回溯法算法的时间分析/

5.2深度优先搜索/

5.2.1图的深度优先遍历/

5.2.2深度优先遍历和回溯法的差别/

5.2.3实战——二叉树的所有路径(LeetCode257★)/

5.3基于子集树框架的问题求解/

5.3.1子集树算法框架概述/

5.3.2实战——子集(LeetCode78★★)/

5.3.3实战——子集Ⅱ(LeetCode90★★)/

5.3.4实战——目标和(LeetCode494★★)/

5.3.5子集和问题/

5.3.6简单装载问题/

5.3.70/1背包问题/

5.3.8完全背包问题/

5.3.9实战——皇后Ⅱ(LeetCode52★★★)/

5.3.10任务分配问题/

5.3.11*实战——完成所有工作的最短时间

(LeetCode1723★★★)/

5.3.12图的m着色/

5.4基于排列树框架的问题求解/

5.4.1排列树算法框架概述/

5.4.2实战——含重复元素的全排列Ⅱ(LeetCode47★★)/

5.4.3任务分配问题/

5.4.4货郎担问题/

习题5/

第6章朝最优解方向前进——分支限界法/

6.1分支限界法概述/

6.1.1什么是分支限界法/

6.1.2分支限界法的设计要点/

6.1.3分支限界法的时间分析/

6.2广度优先搜索/

6.2.1图的广度优先遍历/

6.2.2广度优先搜索算法框架/

6.2.3实战——到家的最少跳跃次数(LeetCode1654★★)/

6.2.4实战——滑动谜题(LeetCode773★★★)/

6.2.5实战——腐烂的橘子(LeetCode994★★)/

6.3队列式分支限界法/

6.3.1队列式分支限界法概述/

6.3.2图的单源最短路径/

6.3.3SPFA算法/

6.3.4实战——网络延迟时间(LeetCode743★★)/

6.3.50/1背包问题/

6.4优先队列式分支限界法/

6.4.1优先队列式分支限界法概述/

6.4.2图的单源最短路径/

6.4.3实战——最小体力消耗路径(LeetCode1631★★)/

6.4.4*实战——完成所有工作的最短时间

(LeetCode1723★★★)/

6.4.50/1背包问题/

6.4.6任务分配问题/

6.4.7货郎担问题/

习题6/

第7章每一步局部最优——贪心法/

7.1贪心法概述/

7.1.1什么是贪心法/

7.1.2贪心法求解问题具有的性质/

7.1.3实战——分发饼干(LeetCode455★)/

7.1.4贪心法的一般求解过程/

7.2求解组合问题/

7.2.1活动安排问题Ⅰ/

7.2.2实战——无重叠区间(LeetCode435★★)/

7.2.3求解背包问题/

7.2.4实战——雪糕的最大数量(LeetCode1833★★)/

7.2.5实战——最大数(LeetCode179★★)/

7.2.6求解零钱兑换问题/

7.3求解图问题/

7.3.1使用Prim算法构造最小生成树/

7.3.2使用Kruskal算法构造最小生成树/

7.3.3实战——连接所有点的最小费用

(LeetCode1584★★)/

7.3.4使用Dijkstra算法求单源最短路径/

7.3.5实战——网络延迟时间(LeetCode743★★)/

7.4求解调度问题/

7.4.1不带惩罚的调度问题/

7.4.2带惩罚的调度问题/

7.5哈夫曼编码/

7.5.1哈夫曼树和哈夫曼编码/

7.5.2实战——最后一块石头的重量

(LeetCode1046★)/

习题7/

第8章保存子问题的解——动态规划/

8.1动态规划概述/

8.1.1从一个简单示例入门/

8.1.2动态规划的原理/

8.1.3动态规划求解问题的性质和步骤/

8.1.4动态规划与其他方法的比较/

8.2一维动态规划/

8.2.1最大连续子序列和/

8.2.2实战——最大子序列和(LeetCode53★)/

8.2.3最长递增子序列/

8.2.4*活动安排问题Ⅱ/

8.3二维动态规划/

8.3.1三角形的最小路径和/

8.3.2实战——下降路径最小和(LeetCode931★★)/

8.4三维动态规划/

8.4.1使用Floyd算法求多源最短路径/

8.4.2*双机调度问题/

8.5字符串动态规划/

8.5.1最长公共子序列/

8.5.2编辑距离/

8.6背包动态规划/

8.6.10/1背包问题/

8.6.2实战——目标和(LeetCode494★★)/

8.6.3完全背包问题/

8.6.4实战——零钱兑换(LeetCode322★★)/

8.6.5*多重背包问题/

8.7树形动态规划/

8.7.1树形动态规划概述/

8.7.2实战——找矿(LeetCode337★★)/

8.7.3实战——监控二叉树(LeetCode968★★★)/

8.8区间动态规划/

8.8.1区间动态规划概述/

8.8.2矩阵连乘问题/

8.8.3实战——最长回文子串(LeetCode5★★)/

习题8/

第9章最难问题——NP完全问题/

9.1P类和NP类/

9.1.1易解问题和难解问题/

9.1.2判定问题/

9.1.3P类/

9.1.4NP类/

9.2多项式时间变换和NP完全问题/

9.2.1多项式时间变换/

9.2.2NP完全性及其性质/

9.2.3第一个NP完全问题/

9.2.4其他NP完全问题/

习题9/

参考文献/

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘