leetcode JAVA Subsets II 4.26 难度系数4
2014-03-10 09:58
501 查看
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], [] ]
public class Solution {public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();ArrayList<Integer> result = new ArrayList<Integer>();Arrays.sort(num);dfs(num,0,result,results);return results;}private void dfs(int[] num, int step, ArrayList<Integer> result,ArrayList<ArrayList<Integer>> results) {if(!results.contains(result))results.add(new ArrayList<Integer>(result));for(int i=step;i<num.length;i++){result.add(num[i]);dfs(num, i+1, result, results);result.remove(result.size()-1);}}}跟上题一样,可以2种方式加上去除重复。
第二种去重:
public class Solution {public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();ArrayList<Integer> result = new ArrayList<Integer>();Arrays.sort(num);dfs(num,0,result,results);return results;}private void dfs(int[] num, int step, ArrayList<Integer> result,ArrayList<ArrayList<Integer>> results) {results.add(new ArrayList<Integer>(result));for(int i=step;i<num.length;i++){if(i!=step&&num[i]==num[i-1])continue;result.add(num[i]);dfs(num, i+1, result, results);result.remove(result.size()-1);}}}
相关文章推荐
- leetcode JAVA Unique Paths II 难度系数3 3.21
- leetcode JAVA Unique Binary Search Trees II 4.28 难度系数4
- leetcode JAVA Subsets 难度系数3 3.27
- leetcode JAVA Remove Duplicates from Sorted List II 难度系数3 3.29
- leetcode JAVA Binary Tree Level Order Traversal II 难度系数3 3.39
- leetcode JAVA Best Time to Buy and Sell Stock II 3.43 难度系数3
- leetcode JAVA Spiral Matrix II 难度系数3 3.19
- leetcode JAVA Decode Ways 难度系数3 3.31
- leetcode JAVA Minimum Path Sum 难度系数3 3.22
- 90.Subsets II leetcode java
- leetcode JAVA Reverse Words in a String 难度系数2-3?最新题151
- leetcode JAVA Simplify Path 难度系数3 3.23
- leetcode JAVA Set Matrix Zeroes 难度系数3 3.24
- leetcode JAVA Restore IP Addresses 难度系数3 3.33
- leetcode JAVA Unique Paths 2.14 难度系数2
- leetcode JAVA Search a 2D Matrix 难度系数3 3.25
- leetcode JAVA Partition List 难度系数3 3.30
- leetcode JAVA Unique Binary Search Trees 难度系数3 3.34
- leetcode JAVA Substring with Concatenation of All Words 难度系数3 3.12
- leetcode JAVA Combinations 难度系数3 3.26