--- title: "子集" created: 2025-11-28 tags: - 算法 --- # 子集 ## 题目 [子集](https://leetcode.cn/problems/subsets/description/) ![[image-d44012b9.png]] ## 思路分析 记原序列中元素的总数为 n 原序列中的每个数字 $a\_i$ 的状态可能有两种 即「在子集中」和「不在子集中」 用 1 表示「在子集中」,000 表示不在子集中 那么每一个子集可以对应一个长度为 n 的 0/1 序列 第 i 位表示 $a\_i$ 是否在子集中 ## 代码实现 ```java class Solution { public: vector t; vector> ans; vector> subsets(vector& nums) { int n = nums.size(); for (int mask = 0; mask < (1 << n); ++mask) { t.clear(); for (int i = 0; i < n; ++i) { if (mask & (1 << i)) { t.push_back(nums[i]); } } ans.push_back(t); } return ans; } }; ``` ## 同类题型 ## 视频讲解 --- ⬅️ [[二进制枚举子集|二进制枚举子集]] 🏠 [[00-刷题理模型]] ➡️ [[2-Learning/02-算法/03-刷题理模型/位运算相关问题/二进制优化/快速幂|快速幂]]