1.简述:
给你一个整数数组 nums ,它可能包含重复元素,请返回所有可能的子集(幂集)。
解集 不能 包括重复的子集。回收解集中,子集可按 任意顺序 排列。
示例 1:
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]
示例 2:
输入:nums = [0]
输出:[[],[0]
2.实现代码:class Solution { List> ans = new ArrayList
>(); public List
> subsetsWithDup(int[] nums) { Arrays.sort(nums); int n = nums.length; for (int mask = 0; mask < (1 << n); ++mask) { t.clear(); boolean flag = true; for (int i = 0; i < n; ++i) { if ((mask & (1 << i)) != 0) { if (i > 0 && (mask >> (i - 1) & 1) == 0 && nums[i] == nums[i - 1]) { flag = false; break; } t.add(nums[i]); } } if (flag) { ans.add(new ArrayList