class Solution {
public List<List<Integer>> subsetsWithDup(int[] nums) {
LinkedList<List<Integer>> result = new LinkedList<List<Integer>>();
if(nums.length == 0 || nums == null) return result;
Arrays.sort(nums);
subsetHelper(nums, 0, result, new LinkedList<Integer>());
return result;
}
public void subsetHelper(int[] nums, int currIdx, List<List<Integer>> result, List<Integer> curr){
result.add(new LinkedList<Integer>(curr));
for(int idx = currIdx; idx < nums.length; idx++){//
if(idx > currIdx && nums[idx] == nums[idx - 1]){
continue;
}
curr.add(nums[idx]);
subsetHelper(nums, idx+1, result, curr);//1,12,123
curr.remove(curr.size() - 1); //移除2,不要想到递归里面去了,因为递归里面也会curr.size() - 1
}
}
}
力扣90. 子集 II
最新推荐文章于 2024-08-06 16:36:12 发布