function combinationSum2(candidates: number[], target: number): number[][] { candidates.sort((a, b) => a - b); const ans: number[][] = []; const t: number[] = []; const dfs = (i: number, s: number) => { if (s === 0) { ans.push(t.slice()); return; } if (i >= candidates.length || s < candidates[i]) { return; } const x = candidates[i]; t.push(x); dfs(i + 1, s - x); t.pop(); while (i < candidates.length && candidates[i] === x) { ++i; } dfs(i, s); }; dfs(0, target); return ans; }