Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).
Note: 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], []
]
package leetCode; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Created by lxw, liwei4939@126.com on 2018/3/12. */ public class L090_Subset { public List<List<Integer>> subsetWithDup(int[] nums){ List<List<Integer>> list = new ArrayList<>(); Arrays.sort(nums); backTrack(list, new ArrayList<>(), nums, 0); return list; } private void backTrack(List<List<Integer>> list, List<Integer> tmpList, int[] nums, int start){ if (start == nums.length){ return; } list.add(new ArrayList<>(tmpList)); for (int i =start; i < nums.length; i++){ if (i > start && nums[i] == nums[i-1]){ continue; } tmpList.add(nums[i]); backTrack(list, tmpList, nums, i+1); tmpList.remove(tmpList.size() - 1); } } public static void main(String[] args){ L090_Subset tmp = new L090_Subset(); int[] nums = new int[]{1, 2, 2}; System.out.println(tmp.subsetWithDup(nums)); } }