-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsubsets.js
50 lines (38 loc) · 942 Bytes
/
subsets.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
78. Subsets
Given an integer array nums of unique elements, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
Example 1:
Input: nums = [1,2,3]
Output: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
Example 2:
Input: nums = [0]
Output: [[],[0]]
*/
/**
* @param {number[]} nums
* @return {number[][]}
*/
// Using Backtracking
var subsets = function (nums) {
// global result
const result = []
// dfs recursive helper
const dfs = (i, nums, slate) => {
// base case
if (i === nums.length) {
result.push(slate.slice())
return
}
// dfs recursive case
// exclude
dfs(i + 1, nums, slate)
// include
slate.push(nums[i])
dfs(i + 1, nums, slate)
slate.pop()
}
dfs(0, nums, [])
return result
};
console.log(subsets([1, 2, 3]))