var combinationSum2 = function(candidates, target) {
candidates.sort((a,b)=>{return b-a})
let len = candidates.length
let min = candidates[len-1];
let res=[];
let path =[];
function combin(candidates,target,i,path) {
if(target == 0){
return res.push(path.slice())
}
if(target < min){
return;
}
for(let start =i;start < len ;start++){
if (candidates[start] === candidates[start-1] && start > i) continue;
path.push(candidates[start])
combin(candidates,target-candidates[start],start+1,path)
path.pop()
}
}
combin(candidates,target,0,path);
return res;
};
理解了第39题,40题就比较容易了,官方题解里面的图特别有用
多加个判断就好
if (candidates[start] === candidates[start-1] && start > i) continue; 这就是剪枝的部分