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;   
    }
};
相关推荐
LLTSTJ13 小时前
进制转换详解(二进制、八进制、十进制、十六进制)
二进制·进制转换·计算机基础·编程入门
hnjzsyjyj14 小时前
东方博宜OJ 2052:图的 dfs 遍历 → 邻接矩阵 / 邻接表
dfs·邻接表·邻接矩阵
kiracrimson3 天前
编码简述:内存里没有文字,只有一张对照表
开发语言·c++·二进制·计算机组成原理
stolentime7 天前
SOS DP学习笔记
c++·笔记·学习·算法·贪心算法·动态规划·二进制
Tsuki_tl8 天前
【优选算法:双指针】——复写零题解
java·c++·算法·leetcode·数组·双指针·复写零
\光辉岁月/10 天前
6.数组工具类
java·数组·数组工具类
2601_9555181812 天前
C# 数组 - FindIndex() 方法
c·教程·数组·示例·findindex()
Logic10113 天前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
Logic10115 天前
C语言/数据结构位运算题解:异或XOR找出数轴移动中只出现一次的指令——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Logic10115 天前
C语言/数据结构贡献法题解:数组权值——所有连续子数组中不同数字个数之和(O(n)解法)
c语言·数据结构·算法·数组·时间复杂度·贡献法·哈希记录