题目:
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
算法:
func subsets(nums []int) [][]int {
ans := make([][]int, 0)
// ans = append(ans, []int{})
result := make([]int, 0)
var backtracking func(index int)
backtracking = func(index int) {
if index == len(nums) {
ans = append(ans, append([]int{}, result...))
return
}
// 不选择nums[index]
backtracking(index + 1)
// 选择nums[index]
result = append(result, nums[index])
backtracking(index + 1)
result = result[:len(result) - 1]
}
backtracking(0)
return ans
}