算法题解
DP核心思想
可以从子问题的最优结果推出更大规模问题的最优结果。让你算每个班的最优成绩就是子问题,你知道所有子问题的答案后,就可以借此推出全校学生的最优成绩这个规模更大的问题的答案。三要素框架
# 初始化 base case
dp[0][0][...] = base
# 进行状态转移
for 状态1 in 状态1的所有取值:
for 状态2 in 状态2的所有取值:
for ...
dp[状态1][状态2][...] = 求最值(选择1,选择2...)Demo
股票最佳买卖时机问题
状态转移方程
base case
总结
0-1背包问题
题目
确定""状态和"选择"
明确dp数组的定义
base case
状态转移方程
完全背包问题
编辑距离问题
题目
解题思路
打家劫舍系列问题
题目
状态和选择
base case
状态转移方程
子序列解题模板:最长回文子序列
俩种思路
题目
贪心算法
博弈问题
定义dp数组的含义
状态转移方程
KMP(Knuth-Morris-Pratt)字符匹配算法
算法概述
定义状态
算法框架
例子
回溯(DFS)算法核心思想
三个问题
算法框架

BFS算法核心思想
算法框架
双向BFS优化


二分搜索
二分搜索套路

滑动窗口算法
算法框架
Union-Find算法
连通的特性
算法核心点
代码实现
单调栈
算法框架模版
循环队列模版
双索引技术
二分查找法
滑动窗口
查找问题
链表相关
虚拟头节点
反转链表
队列和栈
栈
队列
层序遍历相关
优先队列TopK
最后更新于