# 78. Subsets

Medium
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]]
Constraints:
• `1 <= nums.length <= 10`
• `-10 <= nums[i] <= 10`
• All the numbers of `nums` are unique.

### 解題

Runtime: 0 ms, faster than 100%
Memory Usage: 2.3 MB, less than 22.90%
func subsets(nums []int) [][]int {
ans := make([][]int, 0)
var dfs func(int, []int)
dfs = func(index int, cur []int) {
ans = append(ans, append([]int{}, cur...))
if index >= len(nums) { return }
for i:=index; i<len(nums); i++ {
dfs(i + 1, append(cur, nums[i]))
}
}
dfs(0, []int{})
return ans
}

func subsets(nums []int) [][]int {
ans := make([][]int, 0)
var dfs func(int, []int)
dfs = func(index int, cur []int) {
if index == len(nums) {
ans = append(ans, append([]int{}, cur...))
return
}
dfs(index + 1, append(cur, nums[index])) //取該index的值
dfs(index + 1, cur) //不取
}
dfs(0, []int{})
return ans
}