解题方法总结
- 动态规划,广度优先搜索,遍历所有路径后回溯
- 当出现要你查找遍历以达到某种状态或要求解决问题时,要联想到哈希表或者其他容器,记录元素或者搜索元素,在此期间一般也要删除重复的元素
- 二叉树,图,区域有关的遍历搜索路径,涉及到求和,输出路径的问题时,联想到广度优先遍历,深度优先遍历会存在回溯
对以上几点进行举例以加深理解:
2. 当出现要你查找遍历以达到某种状态或要求解决问题时,要联想到哈希表或者其他容器,在此期间一般也要删除重复的元素
leetcode例题:
降重方法:
//定义`unordered_set<int>`对象,用insert()
for (const int& num : nums) {
num_set.insert(num);
}
//num_set.insert(num);这一行将当前循环中的`num`元素插入到`num_set`集合中。
//这里假设`num_set`是一个已定义的`unordered_set<int>`对象,用于存储唯一的整数。
//由于集合中的元素是唯一的,插入操作会检查`num`是否已经存在于集合中。
//如果`num`已经存在,则不会执行插入操作;如果`num`不存在,则将其添加到集合中。
3. 二叉树遍历元素或者与图有关的遍历搜索,涉及到求和,输出路径的问题时,联想到广度优先遍历,深度优先遍历要注意回溯
leetcode例题:
二叉树(深度优先搜索/广度优先搜索):
leetcode.cn/problems/su…
被围绕的区域(深度优先搜索/广度优先搜索):leetcode.cn/problems/su…