您的位置:首页 > 其它

Leetcode 90. Subsets II

2016-04-05 16:13 435 查看

Question

Given a collection of integers that might contain duplicates, nums, 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 nums = [1,2,2], a solution is:

[

[2],

[1],

[1,2,2],

[2,2],

[1,2],

[]

]

Code

public List<List<Integer>> subsetsWithDup(int[] nums) {
Arrays.sort(nums);
Set<List<Integer>> sresults = new HashSet<>();
List<List<Integer>> results = new ArrayList<>();
int len = (int) Math.pow(2, nums.length);
boolean[] flags = new boolean[nums.length];
for (int i = 0; i < len; i++) {
for (int j = 0; j < flags.length; j++) {
if (!flags[j]) {
flags[j] = true;
break;
}
flags[j] = false;
}
List<Integer> sub = new ArrayList<>();
for (int j = 0; j < flags.length; j++) {
if (flags[j]) {
sub.add(nums[j]);
}
}
sresults.add(sub);
}
for (List<Integer> sub : sresults) {
results.add(sub);
}
return results;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: