leetcode 78. 子集

题目描述

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:


输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

题解

倒序遍历数组nums,依次添加到前边的子集中

示例代码(go)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func subsets(nums []int) [][]int {
res := make([][]int, 0)
res = append(res, []int{})
for i := len(nums)-1; i >= 0; i-- {
length := len(res)
for j := 0; j < length; j++ {
tmp := make([]int, 0)
tmp = append(tmp, nums[i])
tmp = append(tmp, res[j]...)
res = append(res, tmp)
}
}
return res
}