Permutations II

2023-05-16

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

For example,
[1,1,2] have the following unique permutations:


[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]  

这题是Permutations的一个拓展,主要是当原数组有重复元素的时候,如果依然按permutations的做法,则会产生重复的排列。比如[1,1,2]的数字,如果首先选择了第一个1,然后是第二个1,再是2和先选择第2个1,再选择第二个1,然后再选择2的结果是一样的。必然产生重复。所以对于这种情况,需要进行重复排除。首先输入的数组不一定有序,如果无序,先进行排序,之后在每一步的选择中,只选择重复数字的第一个数字作为一步,后面的一样的数字则不做操作。避免上述的重复情况。代码相比permutation的代码只需要增加一行,如下:


class Solution(object):
    def permuteUnique(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if not nums:
            return [[]]
        nums.sort()
        allPer = []
        per = []
        used = [False] * len(nums)
        self.helper(nums, used, per, allPer)
        return allPer
        
    def helper(self, nums, used, per, allPer):
        if len(per) == len(nums):
            allPer.append(per+[])
            return 
        
        for i in xrange(len(nums)):
            if used[i]: continue
            if i > 0 and nums[i] == nums[i-1] and not used[i-1]: #排除重复,对于每一步只取重复元素中的第一个。
                continue
            per.append(nums[i])
            used[i] = True
            self.helper(nums, used, per, allPer)
            per.pop()
            used[i] = False  

 

转载于:https://www.cnblogs.com/sherylwang/p/5567096.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Permutations II 的相关文章

  • 每天一个linux命令(4):mkdir命令

    linux mkdir 命令用来 创建指定的 名称的 目录 xff0c 要求创建目录的用户在当前目录中具有写权限 xff0c 并且指定的目录名不能是当前目录中已有的目录 1 xff0e 命令格式 xff1a mkdir 选项 目录 2 xf
  • 历史上消失的十天--儒略日(Julian Days)的来历

    儒略日是由法国学者 Joseph Justus Scaliger xff08 1540 1609 xff09 发明的 xff0c 名称可能是取自 Scaliger 的父亲 xff0c 意大利学者Julius Caesar Scaliger
  • “ -bash:sudo:未找到命令”对于Linux,Debian,CentOS的错误和解决方案

    sudo command is used to execute command as another user This is generally used to run command as root In some cases we c
  • 球机和云台的差别 以及他们的组成

    说的 球机 和 云台 的差别那不得不介绍球机和云台的概念了 xff0c 球机全称为球型 摄像机 xff0c 是现代电视监控发展的代表 xff0c 她集成彩色一体化摄像机 云台 解码器 防护罩等多功能与一体 xff0c 安装方便 使用简单但功
  • [Shell学习笔记] 命令行下的高级网络工具cURL命令

    原文 xff1a http www 1987 name 365 html Linux curl命令是一个利用URL规则在命令行下工作的文件传输工具 它支持文件的上传和下载 xff0c 所以是综合传输工具 xff0c 但按传统 xff0c 习
  • 74系列的型号

    74系列TTL数字逻辑集成电路系国际上通用的标准电路 其品种共分为六大类即 74xx 标准 74LSxx 低功耗肖特基 74Sxx 肖特基 74ALSxx 先进低功耗肖特基 74ASxx 先进肖特基 74Fxx 高速 只要序列号相同 xff
  • 【C#】使用fo-dicom完成BMP,JPG,PNG图片转换为DICOM文件

    最近研究了一下DICOM和BMP文件转换的问题 xff0c 也是很头大 度娘了很久 xff0c 也在CSDN等论坛看到一些断断续续的文件 xff0c 最主要的是代码只是片断 xff0c 不是完整的实现 头大了 首先 xff0c 了解一下BM
  • Atomix getting start 浓浓的机翻

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 概观 Atomix 2 1是用于构建容错分布式系统的全功能框架 Atomix将ZooKeeper的一致性与Hazelcast的可用性和性能相结合 xff0c 使用一组定制通
  • Formik与antd-mobile的移动端的表单实践(下)

    大家好 xff0c 工作闲暇之余又来续写一下Formik这个库的文章了 xff0c 这次文章主要内容为如下 xff1a 更多表单组件的封装示例 单选 多选按钮选择器时间选择器文本输入框提交按钮Formik的表单验证Formik的表单提交处理
  • nginx与tomcat组合使用时获取客户端真实IP

    为什么80 的码农都做不了架构师 xff1f gt gt gt Nginx 43 Tomcat做反向代理在Tomcat中无法获取用户的真实IP解决步骤 xff1a 1 在Nginx配置文件中配置传递到Tomcat的IP变量名 xff1a 一
  • 记一次创建云硬盘失败的解决过程

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 背景 登录dashboard xff0c 点击创建云硬盘失败 xff0c 而且是点击完就直接报error错误 二 解决经过 思路一 xff1a 新上传的image镜像
  • linux samba 配置

    1 所需要软件包 samba common软件包中提供了samba服务器和客户中都必须使用的公共文件 samba软件包中包括了samba服务器程序的所有文件 samba client软件包中提供了Samabe客户机器的所有文件 system
  • tightvnc 远程开机_如何在Linux中安装和访问TightVNC远程桌面?

    tightvnc 远程开机 TightVNC is a very handy remote desktop application which is based on VNC protocol TightVNC is mostly used
  • linux grub命令行,引导工具GRUB详解

    导读 引导程序是驻留在硬盘第一个扇区 MBR 主引导记录 的程序 GRUB是一个功能强大的多系统引导程序 xff0c 专门处理Linux与其它操作系统共存的问题 下面就由我介绍一下grub conf文件里的具体内容及其含义 使用一下命令可以

随机推荐

  • Formik官方应用案例解析(三)使用react-select

    react select简介 React Select是github上一个极其火的控件库 xff0c 星数达到13004 xff0c 它是React开发中几乎是你必需打交道的一个内容 React Select的基本功能实现的是一个表单中的常
  • Juniper MPLS Static LSP

    MPLS Static LSP 1 配置接口去接收和处理MPLS帧 user 64 R1 set interface ge 1 0 0 unit 0 family inet family mpls 2 指定哪个接口运行MPLS user 6
  • 201803考试批次2C 程序设计语言,重庆大学201803批次2可视化程序设计(VB)D卷答案...

    201803考试批次2可视化程序设计 VB D卷 5 O0 R K G l可视化程序设计 VB l K 3 Z t 一 单项选择题 共 10 题 0 20 分 c c N G1 F4 D6 39 64 1 下列程序段的执行结果为 Dim x
  • VNC注册码

    5D7L8 ZQXSA 2L5D4 4UFB4 PWDLA 转载于 https blog 51cto com ciscolinux 1320541
  • matlab中矩阵可视化,matlab-如何可视化显示颜色和值的矩阵?

    您可以使用内置功能 39 X Y Z TickLabelRotation 39 和 39 X Y Z TickLabelRotation 39 并调整图形对象的许多参数 xff0c 轻松地自己创建此类绘图 这是一个例子 xff1a mat
  • Formik与antd-mobile的表单实践(上)

    概览 本文主要用于记录该次使用Formik时用到的相关接口 xff0c 而侧重点不在antd mobile xff0c 对antd mobile会贴出对应组件API 文章需要基础知识点 xff1a React基本知识ES6基本知识 文章实践
  • AT&T CORD架构解读

    这一两年 xff0c 我们时常听到CORD项目 xff08 Central Office Re Architected as a Data Center xff09 AT amp T希望通过CORD项目将运营商网络中的传统端局 xff08
  • 发送端口25,465,587端口疑问解答

    25端口 xff08 SMTP xff09 xff1a 25端口为SMTP xff08 Simple Mail Transfer Protocol xff0c 简单邮件传输协议 xff09 服务所开放的 xff0c 是用于发送邮件 如今绝大
  • brctl 命令详解

    安装网桥管理工具包 xff1a bridge utile 96 96 96 yum install bridge utils y 96 96 96 96 96 96 使用brctl命令创建网桥br1 96 96 96 brctl addbr
  • 缓存缓存CSS的策略

    浏览器缓存CSS将带来主要的性能提升 您确保服务器设置为发送标头 xff0c 这些标头告诉浏览器在给定的时间内挂接到CSS文件 最好的做法是 xff0c 即使不是大多数站点 xff0c 许多站点已经在这样做 与浏览器缓存紧密结合的是缓存清除
  • John the Ripper 安装用使用

    试着在ubuntu下安装了John the Ripper最新版本 xff11 7 9 xff0c 非常不给面子 xff0c 不成功 xff0c 总是报 34 No password hashes loaded 34 的错误 最终参照这篇文章
  • Vue父组件接收不到子组件$emit事件的原因分析

    通常有两种情况 xff1a 事件名称不全是小写 事件名称要求全小写 不是父子关系 这里的父子关系是严格的父子关系 xff0c 祖孙关系也不行 只能一层一层触发 xff0c 这在写树形组件时 xff0c 很容易掉坑里
  • NUMA的关闭方法【转】

    Centos 6 在 etc grub conf 在kernel 添加numa 61 off 就行了 一 检查OS是否开启NUMA numactl hardware available 1 nodes 0 如果是2或多个nodes就说明nu
  • java 网站用户在线和客服聊天

    注 xff1a 本文来源于 java 网站用户在线和客服聊天 这是应用到项目中的一个例子 实现原理是将信息存储到Application域里面 然后使用Struts2 Action 用json格式的数据进行前后台交互 截图 xff1a 前台用
  • Linux中文乱码问题终极解决方法

    方法一 xff1a 修改 root bash profile文件 xff0c 增加export LANG 61 zh CN GB18030 该文件在用户目录下 xff0c 对于其他用户 xff0c 也必须相应修改该文件 使用该方法时putt
  • C#将Excel数据表导入SQL数据库的两种方法(转)

    最近用写个winform程序想用excel 文件导入数据库中 xff0c 网上寻求办法 xff0c 找到了这个经过尝试可以使用 方法一 实现在c 中可高效的将excel数据导入到sqlserver数据库中 很多人通过循环来拼接sql xff
  • 最难学的10大编程语言排行榜,Java只排第三,第一出乎意料

    2018年12月的TIOBE编程语言排行榜已经出炉 xff0c Python重回前三 xff0c Go语言跌出前十 xff0c Visual Basic NET涨幅明显 xff0c 保持第五名 TIOBE排行榜是根据互联网上有经验的程序员
  • 网络安全设计方案

    IDC网络系统安全实施方案 1 吉通上海 IDC网络安全功能需求 1 1 吉通上海公司对于网络安全和系统可靠性的总体设想 xff08 1 xff09 网络要求有充分的安全措施 xff0c 以保障网络服务的可用性和网络信息的完整性 要把网络安
  • Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?

    打开原理图 xff0c 直击菜单栏 gt gt Design xff0c 选择第一项 xff0c gt gt Update PCB Document 在弹出的对话框里面选择执行更改即可将原理图更新到工程下面对应的PCB 也可以先点生效更改看
  • Permutations II

    Given a collection of numbers that might contain duplicates return all possible unique permutations For example 1 1 2 ha