当前位置: 首页 > article >正文

leetcode_78子集

1. 题意

给定一个不含有重复数字的数列,求所有的子集。

2. 题解

子集型回溯,可以直接用dfs进行搜索;也可以用二进制来进行枚举。

2.1 选或不选
class Solution {
public:
    void dfs(vector<vector<int>> &ans,vector<int> &tmp,
             vector<int> &nums, int depth) {
        if (depth == nums.size()) {
            ans.emplace_back(tmp );
            return;
        }

            dfs(ans, tmp, nums, depth + 1);
            tmp.push_back(nums[depth]);
            dfs(ans, tmp, nums, depth + 1);
            tmp.pop_back();
    }


    vector<vector<int>> subsets(vector<int>& nums) {
        
        vector<vector<int>> ans;
        vector<int> tmp;
        dfs( ans, tmp, nums, 0);
        return ans;
    }
};
2.2 选哪个
class Solution {
public:
    void dfs(vector<vector<int>> &ans,vector<int> &tmp,
             vector<int> &nums, int depth) {
        
        ans.emplace_back(tmp);
        for (int i = depth;i < nums.size(); i++) {
            tmp.push_back(nums[i]);
            dfs(ans, tmp, nums, i + 1);
            tmp.pop_back();
        }
    }


    vector<vector<int>> subsets(vector<int>& nums) {
        
        vector<vector<int>> ans;
        vector<int> tmp;
        dfs( ans, tmp, nums, 0);
        return ans;
    }
};
2.3 二进制枚举
class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        
        vector<vector<int>> ans;
        int sz = nums.size();

        for (int i = 0;i < (1 << sz); i++) {
            vector<int> tmp;
            for (int j = 0;j < sz;j++) {
                if (i & (1 << j))
                    tmp.push_back(nums[j]);
            }
            ans.emplace_back( tmp );
        }

        return ans;
    }
};

参考

0x3f题解


http://www.kler.cn/a/536132.html

相关文章:

  • 《手札·开源篇》数字化转型助力永磁电机企业降本增效:快速设计软件如何让研发效率提升40%?
  • [高等数学]曲率
  • 【梦想终会实现】Linux驱动学习5
  • Unity UI Default Shader分析
  • Linux——基础命令1
  • iOS 老项目适配 #Preview 预览功能
  • HTML5 新特性有哪些?
  • 02DevOps基础环境准备
  • 人工智能应用实例-自动驾驶
  • docker安装es及分词器ik
  • react 函数组件怎么使用生命周期函数
  • 高校体育场微信小程序管理系统(源码 +文档)
  • Mysql中存储引擎各种介绍以及应用场景、优缺点
  • Android Studio:相对布局 RelativeLayout
  • 【论文阅读】On the Security of “VOSA“
  • tmux 终端复用器
  • Rust 语言:变革关键任务软件的新力量
  • java中equals和hashCode为什么要一起重写
  • 探索Deepseek核心模型:AI领域的新星
  • 【C++】C++概述
  • Node.js中http模块(二)
  • 一文吃透!DataStage 全面概述与核心知识要点大公开
  • 存储可靠性:从基于磁盘的RAID到分布式纠删码(EC),多副本
  • 计算机网络-SSH基本原理
  • 书籍《新能源汽车动力电池安全管理算法设计》和《动力电池管理系统核心算法》脑图笔记
  • Maven 构建命令详解