78leetcode

📅 2026/7/30 1:25:27 👁️ 阅读次数 📝 编程学习
78leetcode
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; } }