(LeetCode C++)子集

(LeetCode C++)子集,第1张

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

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

示例 2:

输入:nums = [0]
输出:[[],[0]]

提示:

1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同

Method:

使用回溯法收集所有的子集

Code:

class Solution{
public:
    // 回溯查找所有子集
    void Recall(vector &nums,vector> &result,vector &temp,int n){
        // 如果所有的元素都在子集中
        // 中断停止回溯
        if(n>=nums.size()){
            return;
        }

        // 从当前位置遍历子集
        for(int i=n;i> subsets(vector &nums){
        // 二维数组存储所有的子集
        vector> result;
        // 设置缓存存储当前子集
        vector temp;

        // 一定存在一个空子集
        // 因此一开始便将空子集加入结果数组
        result.push_back(temp);

        // 回溯查找所有的子集
        Recall(nums,result,temp,0);

        // 返回所有的子集
        return result;
    }
};

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/subsets

Reference:

LeetCode-子集(C++)_海螺蜜的博客-CSDN博客

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/3002463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存