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();
        }
    }
};
相关推荐
PAK向日葵2 小时前
【算法导论】一道涉及到溢出处理的笔试题
算法·面试
哈泽尔都3 小时前
运动控制教学——5分钟学会样条曲线算法!(三次样条曲线,B样条曲线)
c++·人工智能·算法·机器学习·matlab·贪心算法·机器人
小镇学者3 小时前
【NOI】在信奥赛中 什么是函数交互题?
算法
未知陨落4 小时前
LeetCode:62.N皇后
算法·leetcode
myw0712054 小时前
Leetcode94.二叉数的中序遍历练习
c语言·数据结构·笔记·算法
songx_995 小时前
leetcode(填充每个节点的下一个右侧节点指针 II)
java·数据结构·算法·leetcode
chenyuhao20245 小时前
vector深度求索(上)实用篇
开发语言·数据结构·c++·后端·算法·类和对象
minstbe6 小时前
半导体数据分析:GPR算法小白入门(三) 晶体管I-V特性仿真教程
算法
未知陨落6 小时前
LeetCode:60.单词搜索
算法·leetcode