Skip to content

Commit dd003b1

Browse files
committed
feat: add Subsets II
1 parent 9538ae3 commit dd003b1

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ Roadmap: https://neetcode.io/roadmap
7474
| 46 | [Permutations](https://leetcode.com/problems/permutations/) | Medium | [ts](./TypeScript/46.permutations.ts) | Backtracking |
7575
| 78 | [Subsets](https://leetcode.com/problems/subsets/description/) | Medium | [ts](./TypeScript/78.subsets.ts) | Backtracking |
7676
| 39 | [Combination Sum](https://leetcode.com/problems/combination-sum/description/) | Medium | [ts](./TypeScript/39.combination-sum.ts) | Backtracking |
77+
| 90 | [Subsets II](https://leetcode.com/problems/subsets-ii/description/) | Medium | [ts](./TypeScript/90.subsets-ii.ts) | Backtracking |
7778

7879
### Others
7980

TypeScript/90.subsets-ii.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function subsetsWithDup(nums: number[]): number[][] {
2+
const subsets = [];
3+
4+
function dfs(index: number, subset: number[]) {
5+
if (index === nums.length) {
6+
subsets.push(subset.slice());
7+
return;
8+
}
9+
10+
subset.push(nums[index]);
11+
dfs(index + 1, subset);
12+
subset.pop();
13+
14+
while (index + 1 < nums.length && nums[index] === nums[index + 1]) {
15+
index += 1;
16+
}
17+
dfs(index + 1, subset);
18+
}
19+
20+
nums.sort();
21+
dfs(0, []);
22+
23+
return subsets;
24+
}
25+
26+
console.log(subsetsWithDup([1, 2, 2]));

0 commit comments

Comments
 (0)