第90题:子集II
一. 问题描述
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: [1,2,2]
输出:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
二. 解题思路
本题思路:采用回溯算法进行求解,构建递归函数(全局变量列表data存储子集,局部变量list存储当前某一个具体子集,n表示添加的位数,nums全局数组)
步骤一:将数组nums从小到大进行排序。
步骤二:构建递归函数,判断list对象是否已经存在于data中,如果不存在则添加,则否跳过。
步骤三:根据n的位置继续添加未加入到list的数字,并且返回步骤二进行递归。
步骤四:得到data列表,返回data。
三. 执行结果
执行用时 :17 ms, 在所有 java 提交中击败了9.14%的用户
内存消耗 :36.6 MB, 在所有 java 提交中击败了94.59%的用户
四. Java代码
class Solution {
public List<List<Integer>> subsetsWithDup(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> data=new ArrayList<List<Integer>>();
List<Integer> list=new ArrayList<Integer>();
sw(data,list,0,nums);
return data;
}
public void sw(List<List<Integer>> data,List<Integer> list,int n,int[] nums)
{
if(!data.contains(list))
{
data.add(list);
}
for(int i=n;i<nums.length;i++)
{
List<Integer> alist=new ArrayList<Integer>(list);
alist.add(nums[i]);
sw(data,alist,i+1,nums);
}
}
}
第90题:子集II的更多相关文章
- 【LeetCode 90】子集 II
题目链接 [题解] 我们在枚举下一个要取哪个数字的时候. 如 1112233 for (int i = start;i<=n;i++) //其中start-1是上一次取的位置. 如果i>s ...
- leetcode刷题-90子集 II
题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2]输出:[ [2], [1], [1,2,2], [ ...
- Leetcode之回溯法专题-90. 子集 II(Subsets II)
Leetcode之回溯法专题-90. 子集 II(Subsets II) 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入 ...
- LeetCode 90 | 经典递归问题,求出所有不重复的子集II
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第56篇文章,我们一起来看看LeetCode第90题,子集II(Subsets II). 这题的官方难度是Medi ...
- [leetcode] 90. 子集 II.md
90. 子集 II 78. 子集题的扩展,其中的元素可能会出现重复了 我们仍沿用78题的代码,稍作改动即可: 此时需要对nums先排个序,方便我们后面跳过选取相同的子集. 跳过选取相同的子集.当选取完 ...
- 90. 子集 II
90. 子集 II 题意 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2]输出:[ [2], [1], ...
- LeetCode第[78]题(Java):Subsets(求子集)扩展——第[90]题:Subsets 2
题目:矩阵置0 难度:Easy 题目内容: Given a set of distinct integers, nums, return all possible subsets (the pow ...
- LeetCode:子集 II【90】
LeetCode:子集 II[90] 题目描述 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2] 输出: ...
- Java实现 LeetCode 90 子集 II(二)
90. 子集 II 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2] 输出: [ [2], [1], [ ...
随机推荐
- JavaScript代码document.all(i).tagName
在ie内核的浏览器当中,下面的代码支持document.all(i).tagName.toLowerCase(); 但在火狐浏览器当中,不支持上面的代码,所以需要用下面的一行代码来代替上面的代码.do ...
- 权限管理ranger
为超级管理员airflow赋权: 在ranger 中的hive中加入root policy, url policy 在hdfs中加入/ 的poclicy 你如果需要自动ldap同步,时间1小时,ran ...
- 【Docker】:使用docker安装redis,挂载外部配置和数据
普通安装 1.拉取镜像,redis:4.0 docker pull redis:4.0 2.创建redis容器名"redistest1",并开启持久化 docker run -d ...
- python多任务基础
1.多任务:两个程序段同时运行2.为某个函数创建线程并启动: import threading 线程名 = threading.Thread(target = 函数名,args = 参数元组) #创建 ...
- SVN操作出现locked错误解决办法
SVN操作出现locked错误解决办法:在SVN中执行 commit 操作时,在更新过程中,中断过,或者因为其他原因导致SVN 出现 locked 异常. 解决办法:1. 选中出现异常的文件,右键 - ...
- leetcode --165--php
class Solution { /** * @param String $version1 * @param String $version2 * @return Integer */ functi ...
- params关键字应用
params 是C#中的可变参数, params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候. 关于参数数组,需掌握以下几点. (1)在方法声明中的 params 关键字之后不允 ...
- Django 配置JWT验证
1.setting.py配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentica ...
- 简单实现app使用PC图片
提一个很人性化的需求: 在自己的app里使用PC里的图片. 关键点:传输.怎么把图片从PC导入自己的APP. 因为iOS的封闭性,一般用户不能很方便把图片导入手机相册.笔者稍微想了下,实现功能其实也有 ...
- tesseract图像识别验证码:安装使用和避免坑
安装使用 https://blog.csdn.net/kk185800961/article/details/78747595 避免的坑 http://www.mamicode.com/info-de ...