90.Subsets-II
90. Subsets II
题目地址
https://leetcode.com/problems/subsets-ii/
http://www.lintcode.com/problem/subsets-ii/description
https://www.jiuzhang.com/solutions/subsets/
题目描述
Given an integer array nums that may contain duplicates, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
Example 1:
Input: nums = [1,2,2]
Output: [[],[1],[1,2],[1,2,2],[2],[2,2]]
Example 2:
Input: nums = [0]
Output: [[],[0]]
Constraints:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
代码
Approach #1 Backtracing
class Solution {
public ArrayList<ArrayList<Integer>> subsetsWithDup(ArrayList<Integer> array) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
if (array == null) return result;
Collections.sort(array);
List<Integer> list = new ArrayList<Integer>();
dfs(array, 0, list, result);
return result;
}
private void dfs(ArrayList<Integer> array, int pos, List<Integer> list, ArrayList<ArrayList<Integer>> result) {
result.add(new ArrayList<Integer>(list));
for (int i = pos; i < array.size(); i++) {
// exclude duplicates
if (i != pos && array.get(i) == array.get(i - 1)) {
continue;
}
list.add(array.get(i));
dfs(array, i + 1, list, result);
list.remove(list.size() - 1);
}
}
}
Last updated
Was this helpful?