如何做分享赚钱的网站,wordpress logo 编辑器,最新新闻国际新闻,网页制作模板的含义和作用文章目录 题目描述代码 题目描述
给定一个候选人编号的集合 candidates 和一个目标数 target #xff0c;找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用 一次 。
注意#xff1a;解集不能包含重复的组合。
示例 1:… 文章目录 题目描述代码 题目描述
给定一个候选人编号的集合 candidates 和一个目标数 target 找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用 一次 。
注意解集不能包含重复的组合。
示例 1:
输入: candidates [10,1,2,7,6,1,5], target 8, 输出: [ [1,1,6], [1,2,5], [1,7], [2,6] ] 示例 2:
输入: candidates [2,5,2,1,2], target 5, 输出: [ [1,2,2], [5] ]
提示:
1 candidates.length 100 1 candidates[i] 50 1 target 30
代码
class Solution {ListListInteger result new ArrayList();LinkedListInteger path new LinkedList();public ListListInteger combinationSum2(int[] candidates, int target) {Arrays.sort(candidates);backTracking(candidates,target,0,0);return new ArrayList(result);}//使用回溯的方式来找public void backTracking(int[] candidates, int target, int sum,int startIndex) {//递归出口if (sum target) {return;}//找到满足条件的结果就添加到result中if (sum target) {result.add(new ArrayList(path));return;}for (int i startIndex; i candidates.length; i) {path.add(candidates[i]);backTracking(candidates,target,sumcandidates[i],i1);path.removeLast();//回溯//如果下一轮的开头元素和这一轮一样就直接跳过要不就会有重复的结果组合while ((i1) candidates.lengthcandidates[i1]candidates[i]){i;}}}
}