美文网首页算法练习
子集(LeetCode 78)

子集(LeetCode 78)

作者: 倚剑赏雪 | 来源:发表于2020-02-20 23:09 被阅读0次

    题目

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
    说明:解集不能包含重复的子集。
    示例:
    输入: nums = [1,2,3]
    输出:
    [
    [3],
    [1],
    [2],
    [1,2,3],
    [1,3],
    [2,3],
    [1,2],
    []
    ]

    解析

    算法思路
    算法过程推导
     public IList<IList<int>> Subsets(int[] nums) {
            IList<IList<int>> res = new List<IList<int>>();
            BackTrack(0,nums,res,new List<int>());
            return res;
        }
    
        void BackTrack(int idx, int[] nums, IList<IList<int>> res, IList<int> temp)
        {
            res.Add(new List<int>(temp));
            for (int i = idx; i < nums.Length; i++)
            {
                temp.Add(nums[i]);
                BackTrack(i + 1, nums, res, temp);
                temp.RemoveAt(temp.Count-1);
            }
        }
    

    相关文章

      网友评论

        本文标题:子集(LeetCode 78)

        本文链接:https://www.haomeiwen.com/subject/kpxqqhtx.html