Leetcode--90. 子集Ⅱ

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

说明:解集不能包含重复的子集。

示例:

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

思路:相比第78题,本题重点在于去重

例如:[2,2,1,2,2]

1.选择0,2,3位置的数字和1,2,3位置的数字是一样的,这种的是顺序,数字完全一样

2.选择0,2,3位置的数字和2,3,4位置的数字也是一样的,这种的是数字一样,但是顺序不一样

那首先想办法消除第二种,直接给nums数组去重,这样就不会出现第二种情况了

之后需要判断当前数字和上一个数字是否相同,相同的话跳过即可。

提交的代码:

class Solution {
   public static List<List<Integer>> subsetsWithDup(int[] nums) {
        Arrays.sort(nums);
        List<List<Integer>> result = new ArrayList();
        List<Integer> list = new ArrayList();
        result = find(0,nums,list,result);
        return result;
    }
    public static List<List<Integer>> find(int begin,int[] nums,List<Integer> list,List<List<Integer>> result)
    {
        int i;
        result.add(new ArrayList(list));
        for(i=begin;i<nums.length;i++)
        {
            if(i>begin&&nums[i]==nums[i-1])
            {
                continue;
            }

            list.add(nums[i]);
            find(i+1,nums,list,result);
            list.remove(list.size()-1);
        }
        return result;
    }
}

完整的代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Solution90 {
    public static List<List<Integer>> subsetsWithDup(int[] nums) {
        Arrays.sort(nums);
        List<List<Integer>> result = new ArrayList();
        List<Integer> list = new ArrayList();
        result = find(0,nums,list,result);
        return result;
    }
    public static List<List<Integer>> find(int begin,int[] nums,List<Integer> list,List<List<Integer>> result)
    {
        int i;
        result.add(new ArrayList(list));
        for(i=begin;i<nums.length;i++)
        {
            if(i>begin&&nums[i]==nums[i-1])
            {
                continue;
            }
            list.add(nums[i]);
            find(i+1,nums,list,result);
            list.remove(list.size()-1);
        }
        return result;
    }
    public static void main(String[] args)
    {
        int[] nums = {1,2,2};
        List<List<Integer>> list = new ArrayList();
        list = subsetsWithDup(nums);
        Iterator<List<Integer>> it = list.iterator();
        while(it.hasNext()) {
            Iterator<Integer> itt = it.next().iterator();
            while(itt.hasNext()) {
                System.out.print(itt.next()+" ");
            }
            System.out.println();
        }
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yoshua Bengio:深度学习的未来需要“探索高级认知的归纳偏置”

来源&#xff1a;AI科技评论 编译&#xff1a;Mr Bear本文介绍了Yoshua Bengio及其学生Anirudh Goyal近期发表的一篇论文&#xff0c;该论文围绕“归纳偏置”概念&#xff0c;展开了对当下人工智能研究现状的讨论&#xff0c;并提出了富有启发性的观点&#xff1a;不同的深度学…

毕业季

真高兴。 一个懦弱了大学四年的人&#xff0c;竟然破天荒地跑去跟喜欢的女孩子表白。 他依然害怕知道结果&#xff0c;但他不后悔。 转载于:https://www.cnblogs.com/can-i-do/p/9164173.html

头发剪短了要快速生发_怎样生发效果最好最快?四个方法快速长出头发!

脱发问题导致很多人头发稀少、头发细软油腻&#xff0c;这些症状&#xff0c;让患者时常感到十分的痛苦&#xff0c;因为他们每天都要面临被调侃和取笑的尴尬&#xff0c;不仅个人形象全无&#xff0c;更是饱受严重的自卑心理&#xff0c;甚至因为脱发问题&#xff0c;总是给人…

AI求解薛定谔方程,兼具准确度和计算效率,登上《自然-化学》

来源&#xff1a;机器学习研究组订阅号即使并非物理学界人士&#xff0c;我们也对薛定谔这个名字并不陌生&#xff0c;比如「薛定谔的猫」。著名物理学家埃尔温 薛定谔是量子力学奠基人之一&#xff0c;他在 1926 年提出的薛定谔方程&#xff08;Schrdinger equation&#xff…

老鼠喝药水

已知有11瓶无色无味的药水&#xff0c;其中有1瓶有毒并且其他10瓶无毒&#xff0c;喝了有毒的药水后会在23个小时之后的一个小时内毒发身亡&#xff08;死亡时间在1个小时内随机&#xff09;。现在有4只老鼠&#xff0c;如何在一天之内(第二天)找出这瓶有毒的药水&#xff1f; …

整个trick

数据输入方面:1.image pyramid 图像金字塔.目前代码里是先选取一个scale,然后在每个GPU上按照scale读图片,相应的gt也更改."scales":[440, 520, 600, 680, 760] 使用的是短边的缩放到的尺寸,还用个maxsize限制了你的scale必须小于一个值 wk的代码和原本的sensenet很大…

redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建

当你试图解决一个你不理解的问题时,复杂化就产成了。—Andy BootheRedis集群安装部署Redis是一个运行在内存的非关系型数据库&#xff0c;因为其速度快(效率高)&#xff0c;支持数据的持久化(安全)&#xff0c;事务操作的原子性(所有操作的原子性)&#xff0c;使得其在高并发场…

千禧年大奖难题之始与未终

来源&#xff1a;数学文化撰文&#xff1a;Arthur Michael Jaffe、薛博卿“千禧年大奖难题”的诞生千禧之际&#xff0c;万象更新&#xff0c;数学界的柔风细雨中惊响起初夏的雷鸣。七个重要的数学问题&#xff01;七百万美元的巨额奖金&#xff01;克雷数学研究所公布的大奖难…

Leetcode--120. 三角形最小路径和

给定一个三角形&#xff0c;找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如&#xff0c;给定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11&#xff08;即&#xff0c;2 3 5 1 11&#xff0…

个人做的一些小工具分享

RCTRL键位替代鼠标右键 检测断网休眠工具 单机截图转载于:https://www.cnblogs.com/toumingbai/p/9166443.html

linux mysql 5.6.14_CentOS 6.4下编译安装MySQL 5.6.14

配置用户MySQL启动成功后&#xff0c;root默认没有密码&#xff0c;我们需要设置root密码。设置之前&#xff0c;我们需要先设置PATH&#xff0c;要不不能直接调用mysql修改/etc/profile文件&#xff0c;在文件末尾添加PATH/usr/local/mysql/bin:$PATHexport PATH关闭文件&…

全世界最前沿的125个科学问题

来源&#xff1a;世界先进制造技术论坛在庆祝Science创刊125周年之际&#xff0c;Science公布了125个最具挑战性的科学问题。了解前沿科学研究方向&#xff0c;对你的成长或许有所帮助。简单归纳统计这125个问题&#xff0c;其中涉及生命科学的问题占46%&#xff0c;关系宇宙和…

Leetcode--215. 数组中第K个最大元素

在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明: 你可以假设 k 总是…

解读阿里官方代码规范

2017年开春&#xff0c;阿里对外公布了「阿里巴巴Java开发手册」从头到尾浏览了一遍这份手册之后&#xff0c;感觉很棒。虽然其中的某些观点笔者不能苟同&#xff0c;但大部分的规范还是值得绝大多数程序员学习和遵守的。 笔者将对这份代码规范中的一些细节做一些解读&#xff…

知识图谱下一站:认知智能

来源&#xff1a;华东师大ICA本文系首届“认知智能”研讨会讨论部分会议纪要。首届“认知智能”研讨会&#xff0c;由华东师范大学计算机学院主办&#xff0c;于12月8日在华东师范大学中山北路校区办公楼小礼堂成功举办。会中多位专家学者进行了学术报告&#xff0c;并围绕认知…

mysql常见错误解决方法_mysql常见错误解决办法

解决mysql利用二进制日志恢复数据报错&#xff1a;ERROR 1781 (HY000) at line 16: SESSION.GTID_NEXT cannot be set to UUID:NUMBER when GLOBAL.GTID_MODE OFF.解决办法&#xff1a;配置gtid选项配置前&#xff1a;mysql> show global variables like ‘gtid_mode‘;ERR…

win10 git bash 闪退

使用ghost重装了win10 专业版后。安装git&#xff0c;尝试重装了n个版本的git,右键git bash here 直接闪退&#xff0c;直接进入安装目录打开git-bash.exe依旧闪退&#xff0c; git右键点击Git Bash Here闪退并会在当前目录下生成mintty.exe.stackdump文件。 右键GIT GUI here错…

Leetcode--264. 丑数Ⅱ

编写一个程序&#xff0c;找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例: 输入: n 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1 是丑数。 n 不超过1690。 思路&#xff1a;从1开始&#xff0c;需要对每个值都乘以2…

智慧城市产业图谱(2020年)

来源&#xff1a;中国信息通信研究院&#xff08;转载请注明来源&#xff09;编辑 &#xff1a;蒲蒲推进新型智慧城市&#xff0c;是党中央、国务院推动我国新型工业化、信息化、城镇化和农业现代化同步发展做出的重大决策&#xff0c;有利于深化新一代信息通信技术与城市发展的…

MySQL运维知识点_mysql运维必备知识点(转载至其他作者)

(1)基础笔试命令考察1.开启MySQL服务/etc/init.d/mysqld startservice mysqld startsystemctl start mysqld2.检测端口是否运行lsof -i :3306netstat -lntup |grep 33063.为MySQL设置密码或者修改密码设置密码mysql -uroot -ppassword -e "set passowrd for root passowr…