public List<List<Integer>> combinationSum(int[] candidates, int target)
{
List<List<Integer>> res = new ArrayList<>();
Arrays.sort(candidates);
helper(candidates, target, res, new ArrayList<>(), 0);
return res;
}
private void helper (int[] candidates, int target, List<List<Integer>> res, List<Integer> temp, int index) {
if( target < 0) return;
if(target == 0) {
res.add(new ArrayList<>(temp));
return;
}
for(int i = index; i < candidates.length; i++) {
if(candidates[i] > target) {
return;
}
temp.add(candidates[i]);
helper(candidates, target - candidates[i], res, temp, index);
temp.remove(temp.size() - 1);
}
}
For an input: candidates = [2,3,6,7], and target = 7
My output is: [[2,2,3],[2,3,2],[3,2,2],[7]]
Correct Output: [[2,2,3],[7]]
显然,我需要在添加到结果之前检查重复项。
我知道我可以创建一组字符串,其中每个字符串都是列表的排序版本,例如 [2,3,2] => “223”。这将帮助我检查是否需要将列表添加到结果中。
我的问题是在我的情况下检查重复项的最佳方法是什么?
慕雪6442864
吃鸡游戏
牧羊人nacy
弑天下
相关分类