全排列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()
相关推荐
草莓橙子碗18 分钟前
Claude 使用指南
开发语言·python
工具分享26 分钟前
陪跑跟品爆单AI选品助手,高效跟品会赔本吗?
人工智能·python
COOLMO研究AI40 分钟前
Python 如何实现 AI API 的提示词(Prompt)版本管理与热更新
人工智能·python·prompt
老郑聊AI业财智造44 分钟前
Transformer 技术架构与源码分析
人工智能·python·深度学习·语言模型·架构·transformer·软件工程
程序员三藏1 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
230万光年的思念2 小时前
分子动力学模拟参考文献
python
HongXu_CaiYi2 小时前
0103-python相关-函数、文件
python
vortex53 小时前
从Conda到UV:Python项目依赖管理的现代演进
python·conda·uv
何以解忧,唯有..3 小时前
Python time 模块详解:时间处理与日期操作指南
开发语言·python
梅雅达编程笔记4 小时前
Day 18 · 综合实战 B:AI 客服 Agent(专栏收官)
python·智能客服·ai agent·意图识别·ai客服·大模型应用·ai办公自动化