给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subsets
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
0,1背包,递归很好写
func subsets(nums []int) [][]int {
if len(nums) == 1 {
ret := make([][]int, 0)
ret = append(ret, []int{})
ret = append(ret, []int{nums[0]})
return ret
} else {
ret := subsets(nums[1:])
for _, r := range ret {
nr := make([]int, len(r))
copy(nr, r)
nr = append(nr, nums[0])
ret = append(ret, nr)
}
return ret
}
}
话说用go写老是速度击败100%用户,真是让人欣慰