【LeetCode】47. 全排列 II

news2024/11/19 7:22:10

1 问题

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

示例 1:

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

示例 2:

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

2 答案

自己写的不对,回溯算法,不能刚开始就使用快慢指针对列表去重

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        # 数组内部去重,但是不太行,审题错了
        nums.sort()
        slow = 0
        fast = 0
        for i in range(len(nums)):
            if nums[slow] == nums[fast]:
                fast += 1
            else:
                nums[slow+1] = nums[fast]
                slow += 1
        new = nums[:slow+1]

        def dfs(size, nums, path, depth, used, res):
            if depth == size:
                res.append(path)
                return # 用返回来打断回溯
            for index in range(size):
                if not used[index]:
                    used[index] = True
                    dfs(size, nums, path+[nums[index]], depth+1, used, res)
                    used[index] = False
        size=len(nums)
        path=[]
        res=[]
        used = [False for _ in range(size)]
        dfs(size, nums, path, 0, used, res)
        return res

官方解,依然是回溯算法,其实加一个判断并continue就可以,return用于打断回溯

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
    
        def dfs(size, nums, path, depth, used, res):
            if depth == size:
                res.append(path)
                return # 用返回来打断回溯
            for index in range(size):
                if not used[index]:
                    if index>0 and nums[index] == nums[index-1] and not used[index-1]:  # 加一个判断就可以,这里不写not也可以,但是算法效率会下降
                        continue
                    used[index] = True
                    dfs(size, nums, path+[nums[index]], depth+1, used, res)
                    used[index] = False
        size=len(nums)
        path=[]
        res=[]
        nums.sort()
        used = [False for _ in range(size)]
        dfs(size, nums, path, 0, used, res)
        return res

在这里插入图片描述

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

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

相关文章

新手如何学习嵌入式Linux?

今日话题,新手如何学习嵌入式Linux?嵌入式底层开发是一项至关重要的技能,广泛应用于各种嵌入式系统中,已经成为我们生活中不可或缺的一部分。因此,学习嵌入式开发变得愈发重要。我这里提供了一份嵌入式学习资料&#x…

ASO优化之增加应用APP安装量的技巧2

我们需要更新应用程序,并且最好以用户会注意到的方式进行更新,季节性或节日的更新非常适合这种情况,例如主题的改变,活动的推出或者是某种折扣。活动是能够让用户相信产品是高质量的关键。 1、应用描述也是优化的一部分。 它是应…

磁珠元器件:微小却强大的科技奇迹 | 百能云芯

在现代科技的背后,有着许多微小而强大的元器件,其中之一是磁珠元器件。尽管它们可能不如计算机芯片或太阳能电池板那样广为人知,但磁珠元器件在各种应用中扮演着重要角色。本文将深入探讨什么是磁珠元器件,它们的工作原理以及在科…

springboot生鲜交易系统springboot46

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

Python爬虫如何设置代理服务器(搭建代理服务器教程)

在Python爬虫中使用代理服务器可以提高爬取数据的效率和稳定性。本文将为您提供搭建代理服务器的详细教程,并提供示例代码,帮助您在Python爬虫中设置代理服务器,实现更高效、稳定的数据抓取。 Python爬虫怎么设置代理服务器(搭建代…

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅰ—— 生成 CSR

目录 替换拓扑图证书关系示意图说明 & 关联博文 1. 默认证书截图2. 使用certificate-manager生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 默认情况下,VMCA 与 Machine SSL的关系是 本系列博文要…

剖析深度学习中的epoch与batch_size关系、代码

目录 前言1. 定义2. 代码 前言 为了区分深度学习中这两者的定义,详细讲解其关系以及代码 1. 定义 在 PyTorch 中,“epoch”(周期)和 “batch size”(批大小)是训练神经网络时的两个重要概念 它们用于控…

Scala语言入门

学习了这么久让我们来回顾一下之前的内容吧 Hadoop生态体系知识串讲 Scala编程语言 一、概述 http://scala-lang.org 专门为计算而生的语言,Scala将(Java后者C)面向对象设计和函数式编程结合在一起的简洁的高级编程语言。而函数式编程强调的是通过传递算子&…

统计学习方法 隐马尔可夫模型

文章目录 统计学习方法 隐马尔可夫模型基本概念概率计算问题直接计算法前向算法后向算法前向概率和后向概率 学习问题监督学习算法Baum-Welch 算法E 步M 步参数估计公式算法描述 解码问题近似算法Viterbi 算法 统计学习方法 隐马尔可夫模型 读李航的《统计学习方法》时&#x…

增加并行度后,发现Flink窗口不会计算的问题。

文章目录 前言一、现象二、结论三、解决 前言 窗口没有关闭计算的问题,一直困扰了很久,经过多次验证,确定了问题的根源。 一、现象 Flink使用了window,同时使用了watermark ,并且还设置了较高的并行度。生产是设置了…

实时精准 自我防护 | 开源网安RASP平台能力获客户认可!

近日,开源网安收到了一封来自华润数科的感谢信,表达了对开源网安团队在网络安全工作中给予大力支持的衷心感谢。开源网安十分注重客户的需求和信任,客户的满意和认可是开源网安最大的追求。 在助力华润数科网络安全工作开展过程中&#xff0c…

运放供电设计

文章目录 运放供电设计如何产生负电压BUCK电路BOOST电路产生负电压FLYBUCK产生负电压 运放供电设计 注:使用0.1u跟10u并联 如何产生负电压 问题:电流小,使用并联方式改善,缺点价格贵,淘宝上买的都是假货ICL7662多是用…

开源情报之领英人脸情报收集,如何快速收集上亿张人脸情报

一.前言 先看应用例子: 残忍至极!乌克兰用人脸识别战死俄军,联系母亲打“心理战” 情报机构,所掌握的数据,可以是市面上流出的任何数据,比如市面上泄露的领英数据,facebook,twitter&…

万能DIY预约小程序源码系统 上门预约服务小程序搭建 适用于各种预约场景 自由DIY功能模块

在这个快节奏的时代,预约服务已经成为了我们日常生活的一部分。从看病挂号到餐厅预订,从美发美容到家政服务,预约已经深入到了各个领域。然而,传统的预约方式存在着许多不便,如电话预约、在线填写表格等,不…

python小游戏:小球碰撞

创建带图形界面的游戏通常需要使用图形库。Python有很多图形库,其中比较流行的包括Pygame, PyOpenGL, Panda3D等。在这里,我将用Pygame作为示例来编写一个简单的游戏。 在运行下面的代码之前,请确保你已经安装了Pygame库。你可以使用以下命令…

ASCII (American Standard Code for Information Interchange)

ASCII (American Standard Code for Information Interchange)美国信息交换标准代码

Python基础--PART1

最近闲来无事,学习使用Python也有好几年了,一直没有系统的总结,现在有时间就写一写个人的一些拙见。 PART1. 核心语法(基础语法) 1. 变量 1.1 变量的定义 ​ 变量就是可变的量,对于一些有可能会经常变化的数据,我们…

负荷不均衡问题分析处理流程

一、负荷不均衡分析 负荷不均衡判断标准:4G同覆盖扇区内存在无线利用率大于50%的小区,且两两小区间无线利用率差值大于30%,判定为4G负荷不均衡扇区;5G同覆盖扇区内存在无线利用率大于50%的小区,且两两小区间无线利用率…

梦幻西游手游详细图文架设教程

前言 提到梦幻西游,大家肯定不陌生。在 2001 年正式上线,它成为了很多人的第一款网游,陪伴了一代又一代的玩家成长。没错,今天要架设的就是梦幻西游手游! 本文讲解梦幻西游手游架设教程,经典的职业、音乐、…

服务器数据恢复-RAID5中磁盘被踢导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: 一台3U的某品牌机架式服务器,Windows server操作系统,100块SAS硬盘组建RAID5阵列。 服务器故障: 服务器有一块硬盘盘的指示灯亮黄灯,这块盘被raid卡踢出后,raid阵列崩溃。 服务器数据…