0078.子集
方法一:回溯
时间复杂度 $O(n \times 2^n)$,空间复杂度 $O(n)$。
func subsets(nums []int) [][]int {
ans, n := [][]int{}, len(nums)
var backtrack func(values []int, start int)
backtrack = func(values []int, start int) {
ans = append(ans, append([]int{}, values...))
for i := start; i < n; i++ {
values = append(values, nums[i])
backtrack(values, i+1)
values = values[:len(values)-1]
}
}
backtrack([]int{}, 0)
return ans
}