40

/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum2 = function(candidates, target) {
    var res = []
    candidates.sort((a,b) => {
        return a - b
    })
    function dfs(candidates, cur, sub, start){
        if(cur < 0){
            return
        }else if( cur === 0) {
            return res.push(sub.slice())
        }else{
            for(var i = start; i < candidates.length; i++){
                while(i > start && candidates[i] === candidates[i - 1]) i++
                sub.push(candidates[i])
                dfs(candidates, cur - candidates[i], sub, i + 1)
                sub.pop()
            }
        }
    }
    dfs(candidates, target, [], 0)
    return res
};

你可能感兴趣的:(40)