第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], [ ...
随机推荐
- AirFlow后台运行调度程序
nohup airflow worker>>$AIRFLOW_HOME/airflow-worker.log >& & nohup airflow scheduler ...
- 【转】sql server迁移到mysql
SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 下载地址:https://www.jb51.net/softs/209207.html#downintro2 分享上来,同时也以便记 ...
- oracle学习笔记day1
oracle数据库前言 oracle sqllesson1 Selecting Rowslesson2 Sorting & Limiting Selected Rowslesson3 Sing ...
- 【转】SpringMVC框架实现后端向前端传数据
首先还是页面userAdd.jsp.它既是发出请求的页面,也是接收返回结果的页面: <%@ page language="java" import="java.ut ...
- windows MinGW gcc 编译乱码问题
问题描述 一般很多编辑器默认都是保存成utf-8文件,然而在输出中文的时候出现了乱码?另外试了其他方法,有的乱码,有的不乱? MinGW gcc 编译 utf-8 文件的时候乱码 MinGW gcc ...
- 使用DANT做FTP的转发代理
FTP不能直接使用nginx进行转发,想了一些办法,最后决定使用iptalbes做DNAT,相关于把这个机器做一台防火墙,做一个NAT 1.启用ip_forward vim /etc/sysctl.c ...
- Java RadixSort
Java RadixSort /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternational ...
- java 框架-企业级搜索 Solr
https://blog.csdn.net/cs_hnu_scw/article/details/79388080 一:Solr简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类 ...
- SQL 语句使用关键字错误
异常为SQL Error: 1064, SQLState: 42000 时 ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIG ...
- JVM学习笔记——字节码指令
JVM学习笔记——字节码指令 字节码 0与 1是计算机仅能识别的信号,经过0和1的不同组合产生了数字之上的操作.另外,通过不同的组合亦产生了各种字符.同样,可以通过不同的组合产生不同的机器指令.在不同 ...