题目(16¥)
题目地址:https://leetcode-cn.com/problems/subsets-ii/
题解
回溯算法,注意 if (i > start && nums[i] == nums[i - 1]) 中的 i > start 起到的效果。
源码
class Solution {
public List<List<Integer>> subsetsWithDup(int[] nums) {
List<List<Integer>> ans = new ArrayList<>();
Arrays.sort(nums);
getAns(nums, 0, new ArrayList<>(), ans);
return ans;
}
private void getAns(int[] nums, int start, ArrayList<Integer> temp, List<List<Integer>> ans) {
ans.add(new ArrayList<>(temp));
for (int i = start; i < nums.length; i++) {
if (i > start && nums[i] == nums[i - 1]) {
continue;
}
temp.add(nums[i]);
getAns(nums, i + 1, temp, ans);
temp.remove(temp.size() - 1);
}
}
}
|