90. Subsets II -Medium
来源:互联网 发布:apache base64 encode 编辑:程序博客网 时间:2024/05/22 16:42
# Question
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
给出一个包含重复数字的整型数组nums,请你返回所有可能的子集(子集不能重复)
Example
If nums = [1,2,2], a solution is:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
Solution
回溯解。得到所有子集只需要每次计算以当前元素为开头的子集即可,但是因为如果输入数组元素重复,按照上面的思路得到的子集会重复,所以我们在遇到相同元素时,对相同元素不能重复计算,即不再计算以该元素为头的子集(因为在第一次遇到的时候已经包含了所有情况),因此我们可以先对输入数组进行排序。
public class Solution { public List<List<Integer>> subsetsWithDup(int[] nums) { Arrays.sort(nums); List<List<Integer>> res = new ArrayList<>(); backtracking(nums, 0, res, new ArrayList<>()); return res; } /** * 思路:因为输入的数组元素会有重复元素,所以在回溯的过程中相同元素不要重复计算,只计算第一个元素的情况即可。 * 所以我们先对输入数组进行排序,保证重复元素不重复计算 * @param nums:输入数组 * @param start:开始索引 * @param res:保存所有情况 * @param temp:保存当前组合 */ public void backtracking(int[] nums, int start, List<List<Integer>> res, List<Integer> temp){ // 将所有情况添加到结果集 res.add(new ArrayList<>(temp)); // 回溯,计算以i开头的所有组合 for(int i = start;i < nums.length; i++){ // 如果后面的元素和前面的相同,则不计算以当前i开头的组合以防重复计算 if(i > start && nums[i] == nums[i - 1]) continue; temp.add(nums[i]); backtracking(nums, i + 1, res, temp); temp.remove(temp.size() - 1); } }}
0 0
- 90. Subsets II -Medium
- Leetcode 90. Subsets II (Medium) (cpp)
- LeetCode #90 - Subsets II - Medium
- LeetCode-90-Subsets II(回溯)-Medium
- 78. Subsets && 90. Subsets II
- 78. Subsets 90. Subsets II
- 78. Subsets &90. Subsets II
- 78. Subsets,90. Subsets II
- 78. Subsets && 90. Subsets II
- 78. Subsets 90. Subsets II
- 78. Subsets & 90. Subsets II
- [leetcode 78 & 90, Medium] Subsets I and II
- 90. Subsets II
- [LeetCode]90.Subsets II
- [Leetcode] 90. Subsets II
- LeetCode --- 90. Subsets II
- 90. Subsets II
- [leetcode] 90.Subsets II
- 异步操作校验工具awaitility源码分析
- 算法训练 乘法表
- 链表的一些操作
- 利用jQuery来对字符串数组和数值数组排序
- mysql 存储引擎
- 90. Subsets II -Medium
- python标准库之urllib, httplib, urllib2
- 1.Hadoop初识
- 注释的误用
- 深度学习Tracking(1)——Learning to Track at 100 FPS with Deep Regression Networks
- 算法训练 入学考试
- 轻听变色之谜-如何改变Android应用的主题色
- 解决运行Java项目出现错误 error:java: 无效的源发行版: 8解决方法
- TCPDUMP/LIBPCAP 3-PCAP 中文手册(1)