给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
func subsets(nums []int) [][]int {
res := [][]int{}
set := []int{}
var def func(index int)
def = func(index int) {
fmt.Println(res)
length := len(nums)
if index == length {
res = append(res, append([]int{}, set...))
return
}
set = append(set, nums[index])
//以下为回溯的关键,代表当前节点被选择与不被选择的两种情况
def(index + 1)
set = set[:len(set)-1]
def(index + 1)
}
def(0)
return res
}