90. 子集 II(中等 回溯 数组)
90. 子集 II
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
示例 1:
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]
示例 2:
输入:nums = [0]
输出:[[],[0]]
提示:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subsets-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析
参考:https://github.com/youngyangyang04/leetcode-master/blob/master/problems/0090.%E5%AD%90%E9%9B%86II.md
去重可参考:https://blog.csdn.net/weixin_43942435/article/details/123380706
题解(Java)
三部曲法:
class Solution {List<List<Integer>> ans = new LinkedList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums);backTracking(nums, 0);return ans;}private void backTracking(int[] nums, int start) {ans.add(new LinkedList<Integer>(path));for (int i = start; i < nums.length; i++) {if (i > start && nums[i] == nums[i - 1]) {continue;} else {path.add(nums[i]);backTracking(nums, i + 1);path.removeLast();}}}
}
选/不选法:
class Solution {private List<List<Integer>> ans = new LinkedList<>();private LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums);helper(nums, 0);return ans;}private void helper(int[] nums, int index) {if (index == nums.length) {ans.add(new LinkedList<>(path));} else {int next = index;while (next < nums.length && nums[next] == nums[index]) {next++;}helper(nums, next);path.add(nums[index]);helper(nums, index + 1);path.removeLast();}}
}
90. 子集 II(中等 回溯 数组)相关推荐
- LeetCode 90.子集 II 中等难度
90. 子集 II 题目: 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例:输入: [1,2,2] 输出: [[2],[1],[ ...
- leetcode 90. 子集 II(回溯算法)
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.返回的解集中,子集可以按 任意顺序 排列. 示例 1: 输入:nums = [1 ...
- LeetCode 90. 子集 II(回溯+剪枝)
文章目录 1. 题目信息 2. 解题 2.1 循环 2.2 回溯 1. 题目信息 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例 ...
- LeetCode 90. 子集 II【数组,回溯算法,排序去重】
90. 子集 II 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.返回的解集中,子集可以按 任意顺序 排列. 示例 1: 输入 ...
- 回溯模板+leetcode——78. 子集 + 90. 子集 II
回溯法 一般情况下,看到题目要求「所有可能的结果」,而不是「结果的个数」,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」. 「回溯法」实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻 ...
- leetcode系列-90.子集 II
leetcode系列–第90题.子集 II 做此题之前务必先做 第78题题目描述: 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子 ...
- leetcode 90. 子集 II 思考分析
与本题相关联的题目解析: leetcode 78. 子集 思考分析 leetcode 40. 组合总和 II思考分析 题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集 ...
- Leetcode 90. 子集 II 解题思路及C++实现
解题思路: 经典的深度优先搜索问题. 这里,根据子集的元素个数 i ,分别进行 dfs .因为 nums 数组中有重复元素,所以在 dfs 程序中,需要有一个去重的判断. 判断逻辑为:当前元素与上一个 ...
- [leetcode]90. 子集 II
bitmasking: 歪打正着,想着跟子集1(没有重复的元素)差不多,去下重就好了,然后没排序,然后就出现了重复的子集,然后排下序观察输出,然后就好了???,然后发现没排序重复是因为有的子集包含的元 ...
- 力扣90. 子集 II(JavaScript)
var subsetsWithDup = function(nums) {let arr=[]let p=[]//去重需要排序nums.sort()const dd=function(index){/ ...
最新文章
- 5 个越早知道越好的 Python 特性
- 采购订单模板_采购必备:如何搭建合规的采购流程
- File如何转换成MultipartFile
- HDFS中的NameNode和DataNode
- Java中 Cloneable 、Serializable 接口详解
- 育网校园云盘,私有云盘,电子备课系统。
- 【软件工程】软件工程需求分析——面向对象分析
- android 离线音乐播放器,5款顶级Android离线音乐播放器,哪款才是你的菜?
- html添加微信号,html代码点击复制微信号并自动打开微信添加好友
- 达人评测 R7 PRO 6850HS 核显相当于什么显卡
- 利用Python创建文件
- 双向dijkstra
- 说说海龟交易法则的基本原理,如何实现海龟交易策略?
- selenium模拟浏览器-----爬取马蜂窝地区全部景点
- QT下实现判断IP地址和掩码有效性的类
- Habse中Rowkey的设计原则——通俗易懂篇
- Django的下载与安装
- 2019最新某图灵系列丛书(交互设计、编程、大数据、人工智能等)
- PMSM FOC控制 Matlab/Simulink仿真之反Park变换
- 跟小丸子学基础口语4-10
热门文章
- broker可以禁用吗 time_【pximouse可以禁用吗】pximouse是什么程序_pximouse是什么
- 互联网社交出海:赤子城年内涨幅280%,“深水区”故事如何说好?
- python中forward是什么意思_pytorch 中forward 的用法与解释说明
- 乾元浩完成A股上市辅导工作:连续多年盈利,中牧股份为控股股东
- Android IBeacon
- 数据结构哈希表的基本操作(C语言)
- Unity导弹,射击
- 苹果官方付费升级内存_vivo推出内存扩容服务:良心还是坑钱?
- 佰落暑期java自学记录-11
- 关于MSP430单片机程序烧写的介绍