给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。

示例 1:

输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

解题思路

通过排序,将相同的元素排在一起,在进行回溯的时候,一个递归的节点内只允许重复的元素出现一次

代码

class Solution {List<List<Integer>> lists=new ArrayList<>();public void bc(int[] arr,int cur,LinkedList<Integer> list) {lists.add(new LinkedList<>(list));for(int i=cur;i<arr.length;i++){if(i>cur&&arr[i]==arr[i-1]) continue;list.addLast(arr[i]);bc(arr, i+1, list);list.removeLast();}}public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums);bc(nums,0,new LinkedList<>());return lists;}
}

leetcode 90. 子集 II(回溯算法)相关推荐

  1. LeetCode 90. 子集 II【数组,回溯算法,排序去重】

    90. 子集 II 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.返回的解集中,子集可以按 任意顺序 排列. 示例 1: 输入 ...

  2. LeetCode 90.子集 II 中等难度

    90. 子集 II 题目: 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例:输入: [1,2,2] 输出: [[2],[1],[ ...

  3. leetcode 90. 子集 II 思考分析

    与本题相关联的题目解析: leetcode 78. 子集 思考分析 leetcode 40. 组合总和 II思考分析 题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集 ...

  4. LeetCode 90. 子集 II(回溯+剪枝)

    文章目录 1. 题目信息 2. 解题 2.1 循环 2.2 回溯 1. 题目信息 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例 ...

  5. Leetcode 90. 子集 II 解题思路及C++实现

    解题思路: 经典的深度优先搜索问题. 这里,根据子集的元素个数 i ,分别进行 dfs .因为 nums 数组中有重复元素,所以在 dfs 程序中,需要有一个去重的判断. 判断逻辑为:当前元素与上一个 ...

  6. [leetcode]90. 子集 II

    bitmasking: 歪打正着,想着跟子集1(没有重复的元素)差不多,去下重就好了,然后没排序,然后就出现了重复的子集,然后排下序观察输出,然后就好了???,然后发现没排序重复是因为有的子集包含的元 ...

  7. 136. Leetcode 47. 全排列 II (回溯算法-排列问题)

    class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:if not nums:return []r ...

  8. 回溯模板+leetcode——78. 子集 + 90. 子集 II

    回溯法 一般情况下,看到题目要求「所有可能的结果」,而不是「结果的个数」,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」. 「回溯法」实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻 ...

  9. 【暴力枚举】LeetCode 90. Subsets II

    LeetCode 90. Subsets II solution1和2均是利用set的,3和4是不利用set的 Solution1:我的答案 迭代法 class Solution { public:v ...

最新文章

  1. PHP pear安装
  2. ORCFILE,ParquetFile,CubeFile使用场景区别
  3. 深度学习核心技术精讲100篇(二十四)-简单谈下深度学习在中文分词中的应用
  4. unix环境高级编程-进程间通信
  5. java 自动启动监听_Spring Boot 启动事件和监听器,太强大了!
  6. linux下keytool生成证书_Keytool生成https证书步骤0014
  7. defaultView与currentStyle的区别_获取CSS样式值
  8. OFD文件在线阅读器
  9. win10c盘扩容_如何给磁盘进行扩容/拆分/合并的操作?保姆级教学
  10. 快速原型模型的概念,优缺点。
  11. Windows系统设置局域网共享(无密码+有密码)
  12. Linux查看目录busy,Linux中遇到device is busy的处理方法
  13. 电脑文件管理,批量提取文件名到excel表格,一招搞定
  14. 最大规模开源说话人识别语料集——VoxCeleb
  15. curses编程(一)初识
  16. mongodb与mysql连接_MongoDB连接数据库
  17. Excel的数据可视化和Python的有什么不同?
  18. 如何在ubuntu 18.04上设置设置sougo拼音输入法
  19. 免费的云端软件测试平台-快意测试云平台介绍
  20. 21岁美女总裁董思阳:创业英雄还是炒作成果?

热门文章

  1. 数据结构--顺序栈和链式栈
  2. Linux下基于socket和多线程的聊天室小程序
  3. WinPcap笔记(6):过滤数据包
  4. 阿里P7大牛手把手教你!一眼就能看懂的Android自学手册,真香!
  5. Jenkins 中定时任务构建
  6. SQL常用日期处理函数(转)
  7. 【转】Java Socket编程基础及深入讲解
  8. PAT——1018. 锤子剪刀布
  9. phpstrom+phpstudy+postman
  10. malloc、calloc、realloc和alloca各种的区别