题目描述

给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。
candidates中数字可以无限制重复被选取。

思路

回溯+剪枝
力扣小白刷题之39题组合求和
说明:

  1. 蓝色结点表示:尝试找到组合之和为该数的所有组合,怎么找呢?逐个剪掉候选数组中的元素即可;
  2. 以 target = 7 为根节点,每一个分支做减法(减去的是数组中的每个数);
  3. 减到 0 或者 负数 的时候,到了叶子节点;
  4. 减到 0 的时候结算,这里 “结算”的意思是添加到结果集;
  5. 从根节点到叶子节点(必须为 0)的路径,就是题目要我们找的一个组合。
    力扣小白刷题之39题组合求和

重复的原因:是在较深层的节点值考虑了之前考虑过的元素,因此需要设置“下一轮搜索的起点”即可。

去重复

  • 在搜索的时候,需要设置搜索起点的下标 start,由于一个数可以使用多次,下一层的节点从这个搜索起点开始搜索;
  • 在搜索起点 start 之前的数因为以前的分支搜索过了,所以一定会产生重复。
  • 设置:下一轮搜索的起点 start = i

代码

力扣小白刷题之39题组合求和

相关文章:

  • 2022-01-04
  • 2021-04-08
  • 2021-05-14
  • 2022-01-02
  • 2021-06-27
  • 2021-06-05
  • 2021-07-28
  • 2021-10-20
猜你喜欢
  • 2021-09-19
  • 2021-06-27
  • 2021-09-29
  • 2021-11-14
  • 2021-05-22
  • 2021-04-23
  • 2021-09-17
相关资源
相似解决方案