var combinationSum2 = function(candidates, target) {
candidates.sort((a,b)=>a-b);
let n=candidates.length;
let res=[];
backtracking(0,[],target);
return res;
function backtracking(start,temp,target){
if(target==0) res.push([...temp]);
if(target<0) return;
else{
for(var i=start;i<n;i++){
if(i>start&&candidates[i]==candidates[i-1]) continue;//这一步非常重要,去重,好好理解下,尤其是前面的i>start非常巧妙。
temp.push(candidates[i]);
backtracking(i+1,temp,target-candidates[i]);
temp.pop();
}
}
}
};