# 子集 II

<p>给你一个整数数组 <code>nums</code> ，其中可能包含重复元素，请你返回该数组所有可能的子集（幂集）。</p><p>解集 <strong>不能</strong> 包含重复的子集。返回的解集中，子集可以按 <strong>任意顺序</strong> 排列。</p><div class="original__bRMd"><div><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>nums = [1,2,2]<strong><br />输出：</strong>[[],[1],[1,2],[1,2,2],[2],[2,2]]</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>nums = [0]<strong><br />输出：</strong>[[],[0]]</pre><p> </p><p><strong>提示：</strong></p><ul>	<li><code>1 <= nums.length <= 10</code></li>	<li><code>-10 <= nums[i] <= 10</code></li></ul></div></div>

## template

```java
class Solution {
	public List<List<Integer>> subsetsWithDup(int[] nums) {
		List<List<Integer>> retList = new ArrayList<>();
		retList.add(new ArrayList<>());
		if (nums == null || nums.length == 0)
			return retList;
		Arrays.sort(nums);
		List<Integer> tmp = new ArrayList<>();
		tmp.add(nums[0]);
		retList.add(tmp);
		if (nums.length == 1)
			return retList;
		int lastLen = 1;
		for (int i = 1; i < nums.length; i++) {
			int size = retList.size();
			if (nums[i] != nums[i - 1]) {
				lastLen = size;
			}
			for (int j = size - lastLen; j < size; j++) {
				List<Integer> inner = new ArrayList(retList.get(j));
				inner.add(nums[i]);
				retList.add(inner);
			}
		}
		return retList;
	}
}
```

## 答案

```java

```

## 选项

### A

```java

```

### B

```java

```

### C

```java

```