方法
- 记录cur深度
- 每到一层后选择是否加上这个深度的值
- 每一层都只有两个选择,带上这个值去下一层或不带上
- 将两种选择都记录下来
- 在最深处加入ans
func subsets(nums []int) [][]int {
ans := make([][]int, 0)
var res []int
var dfs func(int)
dfs = func (cur int) {
if cur == len(nums) {
// temp := make([]int,len(res))
// copy(temp, res)
ans = append(ans,append([]int{},res...))
return
}
res = append(res, nums[cur])
dfs(cur+1)
res = res[:len(res)-1]
dfs(cur+1)
}
dfs(0)
return ans
}