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

candidates 中的数字可以无限制重复被选取。

说明:

所有数字(包括 target)都是正整数。
解集不能包含重复的组合。 
示例 1:

输入: candidates = [2,3,6,7], target = 7,
所求解集为:
[
  [7],
  [2,2,3]
]
示例 2:

输入: candidates = [2,3,5], target = 8,
所求解集为:
[
  [2,2,2,2],
  [2,3,3],
  [3,5]
]

思路:搜索回溯,代码就像说话一样一看就懂。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;public class Solution {private List<List<Integer>> res = new ArrayList<>();private int[] candidates;private int len;private void findCombinationSum(int residue, int start, Stack<Integer> pre) {if (residue < 0) {return;}if (residue == 0) {res.add(new ArrayList<>(pre));return;}for (int i = start; i < len; i++) {pre.add(candidates[i]);findCombinationSum(residue - candidates[i], i, pre);pre.pop();}}public List<List<Integer>> combinationSum(int[] candidates, int target) {int len = candidates.length;if (len == 0) {return res;}this.len = len;this.candidates = candidates;findCombinationSum(target, 0, new Stack<>());return res;}
}

leetcode39. 组合总和相关推荐

  1. [力扣leetcode39]组合总和及回溯法

    [力扣leetcode39]组合总和及回溯法 回溯yyds 小练习 回溯yyds 在算法优化上面回溯法或许没有那么引人注意,但是对于一些题目来说能够回溯已经很好了. 题目:给定一个无重复元素的数组 c ...

  2. LeetCode-39. 组合总和 I

    分析: 由于结果数组要求元素有序,所以在一开始便对原数组进行排序.之后调用回溯函数,与求组合那题的不同之处在于,循环里面递归调用回溯函数中的level参数使用i而非i+1,因为题中允许存在重复元素. ...

  3. LeetCode-39 - 组合总和

    题目 <中等> 组合总和 来源:LeetCode. 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target , 找出 candidates 中可以使数字和为目 ...

  4. LeetCode39.组合总和 JavaScript

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

  5. [Swift]LeetCode39. 组合总和 | Combination Sum

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. leetcode39. 组合总和(回溯)

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

  7. ii 组合总和_40. 组合总和 II

    题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只 ...

  8. 《LeetCode力扣练习》第39题 组合总和 Java

    <LeetCode力扣练习>第39题 组合总和 Java 一.资源 题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidate ...

  9. leetcode算法题--组合总和

    原题链接:https://leetcode-cn.com/problems/combination-sum/ 1.回溯 class Solution {public:vector<vector& ...

最新文章

  1. SDN第二次上机作业
  2. Ember.js如何与后端服务交互?adapter、store、ember data关系揭秘
  3. VC6.0连接数据库,并把大量数据从ACCess转移到SQL sever2008 的问题(亲测可用)
  4. Android中应用安装分析
  5. LS-DYNA常用关键字
  6. 考研预报名即将开始,做好这些实现弯道超车
  7. SqlServer自增长字段归零
  8. Linux Centos快速屏蔽IP访问(iptables)
  9. SATI下载-安装-使用 一看便懂+spss聚类(附安装包)
  10. php gd绘制图片,PHP-用GD绘制图形
  11. 【中间件技术】第四部分 Web Service规范(10) Web Service规范
  12. 题解 CF1389B 【Array Walk】
  13. Github 搜索技巧,快速找到好资源
  14. python高频面试题_02-27 朴素贝叶斯
  15. 转:色情网站背后的秘密 播放器捆绑木马传毒
  16. 2月书讯(下)| 新年到,新书到!
  17. 仿某App锁屏页Gallery
  18. understand学习
  19. Android一键锁屏实现
  20. 给 DataGrid 增加序列号的两种方法

热门文章

  1. .config 和 kconfig以及 makefile的关系
  2. 冠榕智能灯光控制协议分析(controller-node)
  3. asterisk libxml2
  4. Ubuntu 13.10配置root登录
  5. tcp长连接和保活时间
  6. 如何使用autotools工具
  7. mysql 逗号金额比较,如何使用MySQL比较两个逗号分隔的字符串列表
  8. item name=android:width,Android:形状中的笔划创建笔划宽度的边距
  9. Mybatis笔记——Mybatis入门
  10. php如何操作mysql数据库代码_php如何操作mysql数据库的类(附代码)