leetcode 78 子集

简介: leetcode 78 子集

子集

c99e329187e2465ea6d508334762d4dd.png2056e8af2ca8407887ec491d2fb7f922.png


与中序遍历N叉树非常的类似

每一个子集就是一个节点,遍历所有的节点

回溯遍历法(不要简单问题复杂化)

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    void backtracking(vector<int>& nums , int indnx  )
    {
      //每一个节点都加入,无须判断节点
        result.push_back(path);
        //如果遍历指针大于等于最深处,就返回
        if(indnx >= nums.size()) return;
        //横向循环
        for(int i=indnx ; i < nums.size() ; i++ )
        {
          //新值压入
            path.push_back(nums[i]);
            backtracking(nums,i+1);//递归
            path.pop_back();//回溯
        }
        return;
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        backtracking(nums,0);
        return result;
    }
};


二刷

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    void track_back(vector<int>& nums , int indnx)
    {
        if(indnx > nums.size() ) return;
        result.push_back(path);
        for(int i=indnx ; i<nums.size() ;i++)
        {
            path.push_back(nums[i]);
            track_back(nums,i+1);
            path.pop_back();
        }
        return;
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        if(nums.size() == 0) return result;
        track_back(nums,0);
        return result;
    }
};
相关文章
|
21天前
|
Go
golang力扣leetcode 416.分割等和子集
golang力扣leetcode 416.分割等和子集
29 0
|
21天前
leetcode-1994:好子集的数目
leetcode-1994:好子集的数目
45 0
|
21天前
|
Java
leetcode-78:子集
leetcode-78:子集
24 1
leetcode-78:子集
|
21天前
|
算法
leetcode代码记录(子集
leetcode代码记录(子集
13 0
|
21天前
代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集
代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集
26 0
|
21天前
【Leetcode 78】子集 —— 回溯法
回溯法解题步骤:1. 针对所给问题,定义问题的解空间;2. 确定易于搜索的解空间结构;3. 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索
|
21天前
|
Go
golang力扣leetcode 2044.统计按位或能得到最大值的子集数目
golang力扣leetcode 2044.统计按位或能得到最大值的子集数目
22 0
|
21天前
|
Go
golang力扣leetcode 90.子集II
golang力扣leetcode 90.子集II
19 1
|
21天前
|
Go
golang力扣leetcode 78.子集
golang力扣leetcode 78.子集
15 0
|
21天前
|
Java
leetcode:698-划分为k个相等的子集
leetcode:698-划分为k个相等的子集
21 0
leetcode:698-划分为k个相等的子集