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();
        }
    }
};
相关推荐
BanyeBirth22 分钟前
C++动态规划——LIS(最长不下降子序列)
算法·动态规划
小龙报23 分钟前
《算法通关指南---C++编程篇(3)》
开发语言·c++·算法·visualstudio·学习方法·visual studio
凤山老林28 分钟前
排序算法:详解插入排序
java·开发语言·后端·算法·排序算法
知星小度S1 小时前
算法训练之多源BFS
算法·宽度优先
2201_758875441 小时前
LeetCode:19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
Wenhao.1 小时前
LeetCode 合并K个升序链表
leetcode·链表·golang
代码不停2 小时前
Java前缀和算法题目练习
java·开发语言·算法
courniche2 小时前
分组密码常见结构简介
算法·密码学
涤生z2 小时前
list.
开发语言·数据结构·c++·学习·算法·list
茜茜西西CeCe2 小时前
数字图像处理-图像增强(2)
人工智能·算法·计算机视觉·matlab·数字图像处理·图像增强·陷波滤波器