78.子集

61 阅读1分钟

题目:
给你一个整数数组 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
}