Combination Sum II

it2022-05-09  35

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

Each number in C may only be used once in the combination.

Note: All numbers (including target) will be positive integers. The solution set must not contain duplicate combinations. For example, given candidate set [10, 1, 2, 7, 6, 1, 5] and target 8, A solution set is:

[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6] ] public List<List<Integer>> combinationSum2(int[] candidates, int target) { int length = candidates.length; Arrays.sort(candidates); List<List<Integer>> results = new ArrayList<>(); helper(candidates,results,target,0,new ArrayList<>()); List<List<Integer>> results1 = new ArrayList<>(); for (List<Integer> result : results) { if (!results1.contains(result)){ results1.add(result); } } return results1; } public void helper(int[] candidates,List<List<Integer>> results,int target,int index,List<Integer> curr){ if (target==0){ ArrayList<Integer> item = new ArrayList<>(); item.addAll(curr); results.add(item); return; } for (int i=index;i<candidates.length;i++){ if (target>=candidates[i]){ curr.add(candidates[i]); helper(candidates,results,target-candidates[i],i+1,curr); curr.remove(curr.size()-1); } } }

转载于:https://www.cnblogs.com/bingo2-here/p/8506690.html

相关资源:JAVA上百实例源码以及开源项目

最新回复(0)