LeetCode78. 子集(2024秋季每日一题 58)

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

输入:nums = 1,2,3

输出:\[,1,2,1,2,3,1,3,2,3,1,2,3]

示例 2:

输入:nums = 0

输出:\[,0]

提示:

1 < = n u m s . l e n g t h < = 10 1 <= nums.length <= 10 1<=nums.length<=10
− 10 < = n u m s i < = 10 -10 <= numsi <= 10 −10<=numsi<=10
nums 中的所有元素 互不相同


思路:

  • 用二进制枚举每一位 选/或者不选(对应原数组的下标)
  • 将二进制中为 1 的位置对应的元素放入到子集数组中
  • 将所有的子集数组加入最终的答案数组返回即可
cpp 复制代码
class Solution {
public:
    vector<vector<int>> res;
    set<vector<int>> ans;
    vector<vector<int>> subsets(vector<int>& nums) {
        int n = nums.size();
        for(int i = 0; i < (1 << n); i++){
            vector<int> v;
            for(int j = 0; j < n; j++)
                if(i >> j & 1)
                    v.push_back(nums[j]);
            res.push_back(v);
        }
        return res;   
    }
};
相关推荐
玖玥拾19 天前
C/C++ 基础笔记(九)联合、枚举及文件操作
c语言·c++·文件操作·枚举·联合
小bo波20 天前
枚举实战
java·设计模式·枚举·后端开发·代码重构
王老师青少年编程24 天前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝核心思想 )
c++·dfs·csp·信奥赛·搜索剪枝·搜索优化
BestOrNothing_20151 个月前
C++零基础到工程实战(5.2.6):函数与数组和数组引用
c++·数组·函数·数组引用·返回数组·参数数组
浅念-1 个月前
LeetCode 记忆化搜索 刷题总结
数据结构·算法·leetcode·职场和发展·深度优先·dfs
浅念-1 个月前
LeetCode 回溯算法题——综合练习
数据结构·c++·算法·leetcode·职场和发展·深度优先·dfs
我还记得那天1 个月前
数组的2个应用举例
c语言·开发语言·二分查找·数组
浩浩测试一下1 个月前
汇编 16位32位64位通用寄存器(逆向分析)
汇编·windows·stm32·单片机·嵌入式硬件·逆向·二进制
浩浩测试一下1 个月前
汇编 数组与串指令(逆向分析)
汇编·逆向·二进制·免杀·串指令·汇编数组
浩浩测试一下1 个月前
汇编中的段与段寄存器(大小)段序 (逆向分析)
汇编·逆向·二进制·字节序·windows编程·内存地址排序