美文网首页
代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和

代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和

作者: eagleX | 来源:发表于2023-09-03 21:13 被阅读0次

39. 组合总和

回溯三部曲:

定义两个全局变量,二维数组result存放结果集,数组path存放符合条件的结果

首先是题目中给出的参数,集合candidates, 和目标值target。用startIndex来控制for循环的起始位置

递归终止条件

sum大于target和sum等于target

单层搜索的逻辑

单层for循环依然是从startIndex开始,搜索candidates集合

for(inti=startIndex;i<candidates.size();i++){sum+=candidates[i];path.push_back(candidates[i]);backtracking(candidates,target,sum,i);// 关键点:不用i+1了,表示可以重复读取当前的数sum-=candidates[i];// 回溯path.pop_back();// 回溯}

40.组合总和II

这道题比上一题多了个去重的操作

去重的是同一树层上的“使用过”,同一树枝上的都是一个组合里的元素,不用去重

回溯三部曲

递归函数参数

加一个bool型数组used,用来记录同一树枝上的元素是否使用过。

这个集合去重的重任就是used来完成的。

递归终止条件

终止条件为 sum > target 和 sum == target

单层搜索的逻辑

used[i - 1] == true,说明同一树枝candidates[i - 1]使用过

used[i - 1] == false,说明同一树层candidates[i - 1]使用过

这里 used[i - 1] == false说明当前取的 candidates[i] 是从 candidates[i - 1] 回溯而来的

131.分割回文串

回溯三部曲

递归函数参数

全局变量数组path存放切割后回文的子串,二维数组result存放结果集。 (这两个参数可以放到函数参数里)

本题递归函数参数还需要startIndex,因为切割过的地方,不能重复切割,和组合问题也是保持一致的

递归函数终止条件

切割线切到了字符串最后面,说明找到了一种切割方法,此时就是本层递归的终止条件

传入startIndex,表示下一轮递归遍历的起始位置,这个startIndex就是切割线

单层搜索的逻辑

在for (int i = startIndex; i < s.size(); i++)循环中,我们 定义了起始位置startIndex,那么 [startIndex, i] 就是要截取的子串。

首先判断这个子串是不是回文,如果是回文,就加入在vector<string> path中,path用来记录切割过的回文子串

切割过的位置,不能重复切割,所以,backtracking(s, i + 1); 传入下一层的起始位置为i + 1

这里还引入动归思想,厉害了

相关文章

  • 39. 组合总和

    39. 组合总和 很慢的dfs

  • 39. 组合总和

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可...

  • 39.组合总和

    题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所...

  • 39.组合总和

  • 39.组合总和

    Given a set of candidate numbers (candidates) (without du...

  • 39.组合总和

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可...

  • 39. 组合总和

    解题思路 典型的回溯法:递归跳出的条件return 满足题目条件将list加入容器else 未满足条件:for(遍...

  • 39. 组合总和

    题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates...

  • 39. 组合总和

    题目 39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 can...

  • 39. 组合总和

    自己解法 因为有每步减做拆解的感觉,就想到了深度优先遍历加回溯,这也是我理解最深的递归了吧哈哈,并且这种数组为了剪...

网友评论

      本文标题:代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和

      本文链接:https://www.haomeiwen.com/subject/llkqvdtx.html