1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package com.demo.s90;
import java.util.ArrayList; import java.util.Arrays; import java.util.List;
public class Solution { List<Integer> t = new ArrayList<Integer>(); List<List<Integer>> ans = new ArrayList<List<Integer>>();
public List<List<Integer>> subsetsWithDup(int[] nums) { Arrays.sort(nums); int n = nums.length; for (int mask = 0; mask < (1 << n); ++mask) { t.clear(); boolean flag = true; for (int i = 0; i < n; ++i) { if ((mask & (1 << i)) != 0) { if (i > 0 && (mask >> (i - 1) & 1) == 0 && nums[i] == nums[i - 1]) { flag = false; break; } t.add(nums[i]); } } if (flag) { ans.add(new ArrayList<Integer>(t)); } } return ans; } }
|