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

备战蓝桥杯:二进制枚举之子集问题

78. 子集 - 力扣(LeetCode)

利用二进制枚举的方式,把所有的情况都表示出来

比如我们测试用例是[1,2,3] 下标和值对应是 0-1  1-2  2-3 

我们用0到7的二进制就能把所有情况枚举出来

0:0000 ---- 表示三个元素都不选  []

1:0001-----表示只选第一个元素 [1]

2:0010 -----表示只选第二个元素[2]

3:0011 ----- 表示选择前两个元素 [1,2]

4:0100 ----- 表示选择第三个元素 [3]

5:0101 ---- 表示选择[1,3]

6:0110 ------表示选择[2,3]

7:0111 ----- 表示选择[1,2,3]

终止条件是8 1000 也就是1<<3

代码:

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> ret;
        int n = nums.size();
        for(int i = 0;i<(1<<n);i++)
        {
            vector <int> tmp;
            for(int j = 0;j<n;j++)
            {
                if((i>>j)&1) tmp.push_back(nums[j]);
            }
            ret.push_back(tmp);
        }
        return ret;
    }
};


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

相关文章:

  • 移植BOA服务器到GEC2440开发板
  • 练习题(2025.2.9)
  • 重生之我要当云原生大师(十四)分析和存储日志
  • 物联网的三层架构:感知层、网络层与应用层
  • 在 NXP Yocto 环境下实现 Qualcomm Wi-Fi Driver 的 GitLab CI/CD
  • 14:00面试,14:06就出来了,问的问题有点变态。。。
  • AI-学习路线图-PyTorch-我是土堆
  • Web3 开发者的机遇与挑战:技术趋势与职业发展
  • ASP.NET Core JWT Version
  • 【Emotion】打工路夜谈
  • 用 DeepSeek + Kimi 自动做 PPT,效率起飞
  • 鸿蒙 router.back()返回不到上个页面
  • [LeetCode]day17 349.两个数组的交集
  • 云计算架构师的学习成长路线
  • [C 语言篇】数据在内存中的存储
  • 2025牛客寒假算法基础集训营4(补题)
  • Swipe横滑与SwipeItem自定义横滑相互影响
  • 双向链表、内核链表和gdb(20250208)
  • Linux之kernel(1)系统基础理论(1)
  • FreeRTOS的事件组
  • 协议-RK-Gstreamer
  • 07苍穹外卖之redis缓存商品、购物车(redis案例缓存实现)
  • 【Windows】PowerShell 缓存区大小调节
  • LMM-3DP:集成 LMM 规划器和 3D 技能策略实现可泛化操作
  • 深入剖析 JVM 垃圾收集器之 CMS 和 G1
  • Golang:精通sync/atomic 包的Atomic 操作