【每日一题】【回溯】2021年12月8日-39. 组合总和
给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。
candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。
对于给定的输入,保证和为 target 的唯一组合数少于 150 个。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combination-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
class Solution { public List<List<Integer>> combinationSum(int[] candidates, int target) { Arrays.sort(candidates); List<List<Integer>> res = new ArrayList<>(); backTracking(candidates, target, res, 0,new ArrayList<Integer>()); return res; } public void backTracking(int[] candidates, int target, List<List<Integer>> res, int i, List<Integer> list) { if(target == 0) { //添加的是ArrayList,需要进行强制类型转换 res.add(new ArrayList<>(list)); return; } else if(target < 0) { return; } for(int start = i; start < candidates.length; start++) { list.add(candidates[start]); backTracking(candidates, target - candidates[start], res, start, list); list.remove(list.size() - 1); } } }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15664041.html