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;   
    }
};
相关推荐
Tisfy3 天前
LeetCode 1291.顺次数:打表/枚举
算法·leetcode·题解·枚举·遍历
汉克老师11 天前
GESP2026年6月认证C++七级( 第一部分选择题(8-15))精讲
c++·dfs·bfs·哈希·二分算法·gesp7级·网格dp
硕风和炜12 天前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集
玖玥拾1 个月前
C/C++ 基础笔记(九)联合、枚举及文件操作
c语言·c++·文件操作·枚举·联合
小bo波1 个月前
枚举实战
java·设计模式·枚举·后端开发·代码重构
王老师青少年编程1 个月前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝核心思想 )
c++·dfs·csp·信奥赛·搜索剪枝·搜索优化
BestOrNothing_20152 个月前
C++零基础到工程实战(5.2.6):函数与数组和数组引用
c++·数组·函数·数组引用·返回数组·参数数组
浅念-2 个月前
LeetCode 记忆化搜索 刷题总结
数据结构·算法·leetcode·职场和发展·深度优先·dfs
浅念-2 个月前
LeetCode 回溯算法题——综合练习
数据结构·c++·算法·leetcode·职场和发展·深度优先·dfs
我还记得那天2 个月前
数组的2个应用举例
c语言·开发语言·二分查找·数组