随笔分类 - 算法 / 回溯算法
摘要:491.递增子序列 题目链接:491. 递增子序列 - 力扣(LeetCode) 思路 这道题和 90.集合II 类似。不同的是这道题不能通过排序使相同元素聚集在一起,因此不能使用 used数组 或者 startIndex 的方法去重。 在这道题中,虽然我们不可以让相同元素聚集在一起,但是我们可以通
阅读全文
摘要:93.复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 思路 复原ip地址,本质上还是切割问题,但是有了不少的条件: 只能切成4段。 每一段的长度如果大于1,那么就不能是0开头。如果长度为1,可以是0。 每一段的数字在0~255之间。 于是我们对之前切割回文的代码进行修
阅读全文
摘要:39. 组合总和 题目链接:39. 组合总和 - 力扣(LeetCode) 思路 既然题目说可以数组中的数可以无限制重复被选取,那么说明在选取该元素的下一个分支也可以继续使用。 选取和剪枝过程如图: 注意:为什么取了2以后,剩余元素为5,3。因为如果剩余元素为2,5,3的话在后续操作中会出现重复值的
阅读全文
摘要:216.组合总和III 题目链接:216. 组合总和 III - 力扣(LeetCode) 思路 本题思路与 77.组合 差不多,加个限制条件即可解决。 选取过程如图: 代码 1 class Solution { 2 List<List<Integer>> result = new ArrayLis
阅读全文
摘要:回溯算法理论基础 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯法通常使用递归来实现,在递归过程中不断尝试各种可能的解决方案,如果发现当前的解决方案不可行,就回溯到上一步,换一种方案继续尝试。 回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作
阅读全文

浙公网安备 33010602011771号