LeetCode:56.子集

目录

1.子集


1.子集

对于这道题,还是先进行画图来方便寻找思路

通过图中可以看到,每一次向下走的时候都选择的是后面的数字,例如1后面可以选择2和3,2就只能选择3了,如果2选择1的话,就会重复,所以这道题的思路就很明显了,dfs的时候传入数组和开始位置,在后面dfs的时候就从下一个位置开始,同时也要注意还原现场

cpp 复制代码
class Solution {
    vector<vector<int>> ret;
    vector<int> path;
public:
    vector<vector<int>> subsets(vector<int>& nums) 
    {
        dfs(nums, 0);
        return ret;
    }

    void dfs(vector<int>& nums, int pos)
    {
        ret.push_back(path);

        for(int i = pos; i < nums.size(); i++)
        {
            path.push_back(nums[i]);
            dfs(nums, i + 1);
            path.pop_back();
        }
    }
};
相关推荐
数研小生17 小时前
构建命令行单词记忆工具:JSON 词库与艾宾浩斯复习算法的完美结合
算法·json
芒克芒克17 小时前
LeetCode 题解:除自身以外数组的乘积
算法·leetcode
Python 老手18 小时前
Python while 循环 极简核心讲解
java·python·算法
@Aurora.18 小时前
优选算法【专题九:哈希表】
算法·哈希算法·散列表
爱看科技18 小时前
微美全息(NASDAQ:WIMI)研究拜占庭容错联邦学习算法,数据安全与隐私保护的双重保障
算法
qq_4171292518 小时前
C++中的桥接模式变体
开发语言·c++·算法
YuTaoShao19 小时前
【LeetCode 每日一题】3010. 将数组分成最小总代价的子数组 I——(解法二)排序
算法·leetcode·排序算法
吴维炜20 小时前
「Python算法」计费引擎系统SKILL.md
python·算法·agent·skill.md·vb coding
Σίσυφος190021 小时前
PCL Point-to-Point ICP详解
人工智能·算法
玄〤1 天前
Java 大数据量输入输出优化方案详解:从 Scanner 到手写快读(含漫画解析)
java·开发语言·笔记·算法