40.组合综合Ⅱ

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次

**注意:**解集不能包含重复的组合。

java 复制代码
List<List<Integer>> res = new ArrayList<>();

List<Integer> temp = new ArrayList<>();

public List<List<Integer>> combinationSum(int[] candidates, int target){
    Arrays.sort(candidates);
    backtrace(candidates, target, 0);
    return res;
}

public void backtrace(int[] candidates, int target, int idx){
    if(target < 0) return;
    if(target == 0){
        if(!res.contains(temp)) res.add(new ArrayList(temp));
        return;
    }
    if(idx < candidates.length && candidate[idx] > target) return;
    for(int i = idx; i < candidates.length; i++){
        // 这句代码防止candidates数组全是相同数字引起的超时问题
        if(i > 0 && candidates[i] == candidates[i-1]) continue;
        temp.add(candidates[i]);
        backtrace(candidates, target - candidates[i], i + 1);
        temp.remove(temp.size() - 1);
    }
}
相关推荐
YuTaoShao5 分钟前
【LeetCode 每日一题】1984. 学生分数的最小差值
算法·leetcode·排序算法
Aurora@Hui16 分钟前
FactorAnalysisTool 因子分析工具
人工智能·算法·机器学习
wen__xvn18 分钟前
基础算法集训第06天:计数排序
数据结构·算法·leetcode
(; ̄ェ ̄)。19 分钟前
机器学校入门(十三)C4.5 决策树,CART决策树
算法·决策树·机器学习
Ll130452529823 分钟前
Leetcode哈希表篇
算法·leetcode·散列表
独自破碎E29 分钟前
【字节面试手撕】大数加法
java·算法
鱼跃鹰飞31 分钟前
LeetCode热题100: 49.字母异位词分组
java·数据结构·算法·leetcode
myloveasuka43 分钟前
3-8 译码器(正式型号74LS138、 74HC138、74HCT138 等))
笔记·算法·计算机组成原理·硬件
wen__xvn1 小时前
基础算法集训第17天:二分查找
算法·leetcode·职场和发展
myloveasuka1 小时前
MREQ̅ 信号
笔记·算法·计算机组成原理