LeetCode | Subsets II
2014-04-04 11:35
363 查看
题目
Given a collection of integers that might contain duplicates, S, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If S =
is:
分析
在Subsets解法1基础上进行修改,当出现重复元素时,要在上一重复元素的作用范围外添加当前重复元素,避免重复子集的出现。
代码
import java.util.ArrayList;
import java.util.Arrays;
public class SubsetsII {
public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
Arrays.sort(num);
ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list = new ArrayList<Integer>();
results.add(list);
int preSize = 0;
for (int i = 0; i < num.length; ++i) {
int cutPoint = 0;
if (i > 0 && num[i] == num[i - 1]) {
cutPoint = preSize;
}
int j = results.size() - 1;
preSize = results.size();
while (j >= cutPoint) {
list = new ArrayList<Integer>(results.get(j--));
list.add(num[i]);
results.add(list);
}
}
return results;
}
}
Given a collection of integers that might contain duplicates, S, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If S =
[1,2,2], a solution
is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ]
分析
在Subsets解法1基础上进行修改,当出现重复元素时,要在上一重复元素的作用范围外添加当前重复元素,避免重复子集的出现。
代码
import java.util.ArrayList;
import java.util.Arrays;
public class SubsetsII {
public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
Arrays.sort(num);
ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list = new ArrayList<Integer>();
results.add(list);
int preSize = 0;
for (int i = 0; i < num.length; ++i) {
int cutPoint = 0;
if (i > 0 && num[i] == num[i - 1]) {
cutPoint = preSize;
}
int j = results.size() - 1;
preSize = results.size();
while (j >= cutPoint) {
list = new ArrayList<Integer>(results.get(j--));
list.add(num[i]);
results.add(list);
}
}
return results;
}
}
相关文章推荐
- [leetcode] Subsets II
- LeetCode No.90 Subsets II
- Leetcode #90 Subsets II
- leetcode 刷题之路 57 Subsets II
- [LeetCode] Subsets II 解题报告
- [leetcode] Subsets II
- leetcode 日经贴,Cpp code -Subsets II
- LeetCode 90: Subsets II
- [LeetCode] Subsets II
- Subsets II--LeetCode
- LeetCode 91 Subsets II
- 开始刷leetcode day62: Subsets II
- leetcode Subsets II
- [LeetCode][Java] Subsets II
- LeetCode_Subsets II
- [Leetcode] Subsets II (Java)
- [leetcode刷题系列]Subsets II
- LeetCode题解:Subsets II
- [LeetCode] Combinations、Subsets、Subsets II
- leetcode笔记:Subsets II