给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被
给定一个无重复元素的数组 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 中的数字可以无限制重复被相关推荐
- java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...
方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...
- leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组
<span style="color:#ff4635">敬请关注博客,后期不断更新优质博文,谢谢</span> package leetcode.T015_ ...
- 定义一个包含十个元素的数组
##1.定义一个包含十个元素的数组.数组元素自己给出 2.遍历打印出数组元素 3.求出数组当中的最小值打印出来 4.求出数组当中的最大值打印出来 `public static void main(St ...
- 有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,各有一个main函数,谁在前先执行谁!
发现一有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,个有一个main函数,谁在前先执行谁! //Detergent.java //Class:Detergent,Clean ...
- Leetcode04--给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
文章目录 题目 一.归并算法 二.二分查找法 题目 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的中位数. 进阶:你能设计一个时间复杂度 ...
- leetcode C++ 39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 c
一.思路: DFS深度搜索,直到所有元素都被遍历.另外如果一组结果的求和大于target,剪枝返回 class Solution { public:vector<vector<int> ...
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...
2019独角兽企业重金招聘Python工程师标准>>> /** * 功能:给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 可以假定 ...
- c++删除数组中重复元素_leetcode 数组中重复的数字
找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...
- 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...
/** * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 能够假定数组元素原先是按从小到大的顺序排列的. */ /*** 思路:数组被 ...
- php数组选择随机元素,php 数组随机选择一个元素显示的简单示例
这篇文章主要为大家详细介绍了php 数组随机选择一个元素显示的简单示例,具有一定的参考价值,可以用来参考一下. 本代码演示了如何从php数组中随机选择一个元素显示,感兴趣的小伙伴,下面一起跟随512笔 ...
最新文章
- C#设计模式(23种设计模式)
- 服务器网卡的连接速度改成自动检测_ubuntu xftp,ubuntu xftp之间怎么连接,连接步骤...
- matplotlib 显示批量图片_chapter4-1 简单数据可视化包Matplotlib整理1
- 简析TCP的三次握手与四次分手
- LED音乐频谱之点阵
- Linux和Windows下查看、设置环境变量的比较
- 【PHP】月末・月初の出力方法
- 通用计算机的时代,MIT论文:通用计算机时代即将终结
- oracle中对排序的总结(按照拼音、部首、笔画排序功能 )
- OpenGl文章 Android OpenGL ES 简明开发教程
- AirPods耳机mac端管理工具:AirBuddy
- 一分钟理解python里面的functools.partial
- HTML黑客帝国代码雨
- mariaDB安装与配置
- python的下载与安装小牛学堂_Python学习_Day1
- 互联网加速职场变革 大数据催生业界十大热门职业
- JAVA经典算法40题(供面试所用)
- MySQL数据文件介绍及存放位置
- c/c++环境下YOLO4的配置和试运行
- Cocoapods的安装 简单教程(有待完善)
热门文章
- 为大众而写的程序员小说——从《简单易懂的现代魔法》说开去。
- Java获取IP归属地
- 记录对安卓开源项目【nodebb-webview】修改过程中遇见的问题以及解决办法
- 新浪云python开发_Python开发入门与实战17-新浪云部署
- 手机mstsc远程工具_如何通过手机远程控制计算机
- 手机上最好用的五笔输入法_最欠揍的手机输入法,用不好失业又失恋
- 强化学习——格子游戏问题
- Java面向对象知识点总结
- [C++]_ELVE_Windows下QT5.12连接MySql8.0解决方案
- Three.js线宽.lineWidth无效