难度:中等 题目来源:力扣(LeetCode) https://leetcode-cn.com/problems/subsets

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

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

    解法:

    1. func subsets(nums []int) [][]int {
    2. ret := [][]int{}
    3. if nums == nil || len(nums) == 0 {
    4. return ret
    5. }
    6. dfs(&ret, nums, []int{}, 0)
    7. return ret
    8. }
    9. func dfs(ret *[][]int, nums []int, arr []int, index int) {
    10. if len(nums) == index {
    11. *ret = append(*ret, arr)
    12. return
    13. }
    14. dfs(ret, nums, arr, index+1)
    15. arr = append(arr, nums[index])
    16. dfs(ret, nums, arr, index+1)
    17. arr = arr[:0]
    18. }