摘要:
From 算法学习笔记(1) : 并查集 Union-Find 算法怎么应用? 定义 并查集主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。 初始化 int fa[M 阅读全文
摘要:
二叉树遍历 递归遍历 以中序遍历为例: class Solution { public: vector<int> inorderTraversal(TreeNode *root) { vector<int> res; inorder(root, res); return res; } void in 阅读全文
摘要:
回溯算法 代码方面,回溯算法的框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: # 做选择 将该选择从选择列表移除 路径.add(选择) backtrack(路径, 选择 阅读全文
摘要:
动态规划三要素:重叠⼦问题、最优⼦结构、状态转移⽅程。 动态规划的三个需要明确的点就是「状态」「选择」和「base case」,对应着回溯算法中走过的「路径」,当前的「选择列表」和「结束条件」。 某种程度上说,动态规划的暴力求解阶段就是回溯算法。只是有的问题具有重叠子问题性质,可以用 dp tabl 阅读全文