全排列2(重复元素去重、python)

思路:看到需要去重的,如果不要求顺序或者是序列,首先要排序。

由于数组中出现重复元素,所以需要去重。在树层上去重,如何才能知道在同一层?即当usedi-1=0时,说明已经完成了回溯,回到了上一层。此时,当numsi=numsi-1时,说明该层出现重复元素,跳过该元素的搜索。

复制代码
# #全排列2  重复元素去重
def permute2(nums):  #nums=[1,1,2]
    n=len(nums)
    nums.sort()
    res=[]
    path=[]
    used=[0]*n
    def dfs(level):
        if level==n:
            res.append(path[:])
            return
        for i in range(n):
            if i>0 and nums[i-1]==nums[i] and used[i-1]==0:  #去重逻辑
                continue
            if used[i]==0:
                used[i]=1
                path.append(nums[i])
                dfs(level+1)
                used[i]=0
                path.pop()
    dfs(0)
    print(res)
    return res
def main():
    nums=list(map(int,input().split()))
    permute2(nums)
if __name__=="__main__":
    main()
相关推荐
西瓜太郎12341 分钟前
request_id 如何串起请求、路由、计费和日志
后端·python
troy1282 分钟前
Python 基础语法(一):变量、数据类型与运算符
java·服务器·python
用户2986985301418 分钟前
Python 将 Word 文档转换为图片的实践指南
后端·python·api
弈栈录19 分钟前
LangChain Agent 实战:快速构建可调用工具的智能体
python·架构
宸津-代码粉碎机1 小时前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案
java·大数据·人工智能·python·spring
承渊政道2 小时前
Python IDLE鸿蒙PC适配全记录:用 ArkUI 重建编辑、运行、Shell 与基础调试闭环
python·microsoft·harmonyos·鸿蒙系统·pc端
zjh9005302 小时前
Kotlin黑科技:空安全与Java兼容性深度解析
python
黄昏恋慕黎明2 小时前
博客论坛技术迭代
python·pytest
我叫汪枫2 小时前
RAG 进阶:切分、检索、重排序,以及它和 Agent、微调、MCP 都是什么关系
开发语言·python
冰芒芒2 小时前
构建你的第一个 Agent 项目
python