给定一个无重复元素的数组 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]
]

思路:用回溯法,但是得考虑一个问题,就是代码中注释的那一块,很可能 i 会写成从 i = 0 开始循环,这样会出错,所以需要注意,改进见注释。

class Solution {public List<List<Integer>> combinationSum(int[] candidates, int target) {List<List<Integer>> lists = new ArrayList();List<Integer> arr = new ArrayList();backTracking(candidates, 0, target, lists, arr);return lists;}public void backTracking(int[] candidates, int start, int target, List<List<Integer>> lists, List<Integer> arr) {if (target == 0) {lists.add(new ArrayList(arr));return;} else if (target < 0) {return;}// 为什么i从start开始,去掉重复的元素,这样每次target减去一个数// 之后,只能从它后面的数字中寻找,就不会重复;又因为可以重复使用// 相同的元素,因此start可以还等于ifor (int i = start; i < candidates.length; i++) {arr.add(candidates[i]);backTracking(candidates, i, target - candidates[i], lists, arr);arr.remove(arr.size() - 1);}}
}

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

  1. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...

    方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...

  2. leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组

    <span style="color:#ff4635">敬请关注博客,后期不断更新优质博文,谢谢</span> package leetcode.T015_ ...

  3. 定义一个包含十个元素的数组

    ##1.定义一个包含十个元素的数组.数组元素自己给出 2.遍历打印出数组元素 3.求出数组当中的最小值打印出来 4.求出数组当中的最大值打印出来 `public static void main(St ...

  4. 有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,各有一个main函数,谁在前先执行谁!

    发现一有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,个有一个main函数,谁在前先执行谁! //Detergent.java //Class:Detergent,Clean ...

  5. Leetcode04--给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。

    文章目录 题目 一.归并算法 二.二分查找法 题目 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的中位数. 进阶:你能设计一个时间复杂度 ...

  6. leetcode C++ 39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 c

    一.思路: DFS深度搜索,直到所有元素都被遍历.另外如果一组结果的求和大于target,剪枝返回 class Solution { public:vector<vector<int> ...

  7. 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    2019独角兽企业重金招聘Python工程师标准>>> /** * 功能:给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 可以假定 ...

  8. c++删除数组中重复元素_leetcode 数组中重复的数字

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

  9. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    /**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /*** 思路:数组被 ...

  10. php数组选择随机元素,php 数组随机选择一个元素显示的简单示例

    这篇文章主要为大家详细介绍了php 数组随机选择一个元素显示的简单示例,具有一定的参考价值,可以用来参考一下. 本代码演示了如何从php数组中随机选择一个元素显示,感兴趣的小伙伴,下面一起跟随512笔 ...

最新文章

  1. C#设计模式(23种设计模式)
  2. 服务器网卡的连接速度改成自动检测_ubuntu xftp,ubuntu xftp之间怎么连接,连接步骤...
  3. matplotlib 显示批量图片_chapter4-1 简单数据可视化包Matplotlib整理1
  4. 简析TCP的三次握手与四次分手
  5. LED音乐频谱之点阵
  6. Linux和Windows下查看、设置环境变量的比较
  7. 【PHP】月末・月初の出力方法
  8. 通用计算机的时代,MIT论文:通用计算机时代即将终结
  9. oracle中对排序的总结(按照拼音、部首、笔画排序功能 )
  10. OpenGl文章 Android OpenGL ES 简明开发教程
  11. AirPods耳机mac端管理工具:AirBuddy
  12. 一分钟理解python里面的functools.partial
  13. HTML黑客帝国代码雨
  14. mariaDB安装与配置
  15. python的下载与安装小牛学堂_Python学习_Day1
  16. 互联网加速职场变革 大数据催生业界十大热门职业
  17. JAVA经典算法40题(供面试所用)
  18. MySQL数据文件介绍及存放位置
  19. c/c++环境下YOLO4的配置和试运行
  20. Cocoapods的安装 简单教程(有待完善)

热门文章

  1. 为大众而写的程序员小说——从《简单易懂的现代魔法》说开去。
  2. Java获取IP归属地
  3. 记录对安卓开源项目【nodebb-webview】修改过程中遇见的问题以及解决办法
  4. 新浪云python开发_Python开发入门与实战17-新浪云部署
  5. 手机mstsc远程工具_如何通过手机远程控制计算机
  6. 手机上最好用的五笔输入法_最欠揍的手机输入法,用不好失业又失恋
  7. 强化学习——格子游戏问题
  8. Java面向对象知识点总结
  9. [C++]_ELVE_Windows下QT5.12连接MySql8.0解决方案
  10. Three.js线宽.lineWidth无效