import java.util.ArrayList;
import java.util.List;
class Solution {
public List<List<Integer>> subsets(int[] nums) {
// 临时集合,存放当前正在构造的子集
List<Integer> t = new ArrayList<>();
// 最终结果,保存所有子集
List<List<Integer>> ans = new ArrayList<>();
// 数组长度
int n = nums.length;
// mask 掩码遍历:0 ~ (2^n – 1)
for (int mask = 0; mask < (1 << n); mask++) {
// 每次构造新子集前清空临时容器
t.clear();
// 检查每一位二进制
for (int i = 0; i < n; i++) {
// 判断 mask 的第 i 位是不是 1
if ((mask & (1 << i)) != 0) {
t.add(nums[i]);
}
}
// 拷贝临时集合存入结果(重点!不能直接 add(t))
ans.add(new ArrayList<>(t));
}
return ans;
}
}


