当前位置: 首页 > news >正文

【leetcode100】全排列Ⅱ

1、题目描述

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

示例 1:

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

2、初始思路

2.1 思路

避免重复子集,可以使用used保存同层已经访问过的数值,以避免出现重复子集。

2.2 代码

给出used数组的两种使用方案:

(1)将同层访问过的数值加入到used中:

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        path = []
        res = []
        def backtracking(nums, surplus):
            if len(path) == len(nums):
                res.append(path.copy())
                return
            used = set()
            for i in range(len(surplus)):
                if surplus[i] in used:
                    continue
                used.add(surplus[i])
                path.append(surplus[i])
                print(path) 
                backtracking(nums, surplus[:i]+surplus[i+1:])
                path.pop()
        backtracking(nums, nums)
        return res

(2)创建一个与数组长度相同的used数组,如果同层访问过,则将其值保存为True:

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        path = []
        res = []
        nums.sort()
        used = [False] * len(nums)
        def backtracing(nums):
            if len(path) == len(nums):
                res.append(path.copy())
                return
            for i in range(len(nums)):
                if used[i]:
                    continue
                if i>0 and nums[i] == nums[i-1] and not used[i-1]:
                    continue
                path.append(nums[i])
                print(path)
                used[i] = True
                backtracing(nums)
                path.pop()
                used[i] = False
        backtracing(nums)
        return res

相关文章:

  • 不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析
  • VSCode通过SSH远程登录Windows服务器
  • 《SQL编程思想》中的 MySQL 建表语句和测试数据
  • C++友元
  • 如何让ai问答机器人通人性?
  • 在离线情况下如何使用 Python 翻译文本
  • Windows-PyQt5安装+PyCharm配置QtDesigner + QtUIC
  • lanqiaoOJ 1180:斐波那契数列 ← 矩阵快速幂
  • 【接口封装】——22、读写文件
  • Vuex 核心功能与组件通信
  • ThreadLocal(线程本地存储)
  • C++进阶——map和set的使用
  • SpringBoot项目部署到宝塔面板的详细过程
  • 关于解决新版本spring项目请求测试接口返回406的问题
  • 当AI学会“察言观色“:多模态情绪识别的魔幻现实主义之旅
  • BGP路由属性和选路
  • 左叶子之和 找左下角的值 路径总和
  • Ollama+OpenWebUI本地部署大模型
  • 2025-03-15 Python深度学习2——Numpy库
  • 深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)
  • 同日哑火丢冠,双骄的下山路,手牵手一起走
  • 人民日报评论员:因势利导对经济布局进行调整优化
  • 解放日报社论:只争朝夕、不负重托,加快建成具有全球影响力的科技创新高地
  • 中办、国办印发《安全生产考核巡查办法》
  • 探索演艺产业新路径,2万观众走进音乐科技融创节
  • 老凤祥一季度净利减少两成,去年珠宝首饰营收下滑19%