文件名称:leetcode数组下标大于间距-Leetcode:力码
文件大小:240KB
文件格式:ZIP
更新时间:2024-07-20 10:58:49
系统开源
leetcode数组下标大于间距 PRACTICE MAKES PERFECT (让我们一起带上痛苦面具!) 动态规划的核心问题是穷举,由于这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」或者「DP table」来优化穷举过程。 明确 base case --> 明确「状态」--> 明确「选择」 --> 定义 dp 数组/函数的含义。 动态规划框架: 初始化 base case dp[0][0][...] = base 进行状态转移 for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for ... dp[状态1][状态2][...] = 求最值(选择1,选择2...) 回溯问题,实际上就是一个决策树的遍历过程,不合适就退回上一步,通过约束条件, 减少时间复杂度。 回溯算法(DFS)的框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 将该选择从选择列表移除 路径.add(选择) b