Subsets II (contains duplicates)

来源:互联网 发布:淘宝网争议处理规则 编辑:程序博客网 时间:2024/06/07 12:29

Given a collection of integers that might contain duplicates, nums, return all possible subsets.

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],  []]
代码如下:

import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class SubsetsIIContainsDuplicates {public List<ArrayList<Integer>> subsetsII(int[] nums){List<ArrayList<Integer>> list = new ArrayList<>();Arrays.sort(nums);backtrack(list,new ArrayList<>(),nums,0);return list;}private void backtrack(List<ArrayList<Integer>> list, ArrayList<Integer> arrayList, int[] nums, int start) {list.add(new ArrayList<>(arrayList));for(int i=start; i<nums.length;i++){if(i>start && nums[i]==nums[i-1])//防止重复的组合出现continue;arrayList.add(nums[i]);backtrack(list,arrayList,nums,i+1);arrayList.remove(arrayList.size()-1);}}}



原创粉丝点击