全排列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()
相关推荐
郝学胜-神的一滴2 分钟前
力扣 144:二叉树前序遍历的优雅实现
java·数据结构·c++·python·算法·leetcode·职场和发展
拾年2753 分钟前
NumPy数组创建完全指南:从零搭建你的数字积木城
python·机器学习·numpy
王小菲7 分钟前
你能在泰坦尼克号上活下来吗-利用python进行探索性数据分析
python
FBI HackerHarry浩9 分钟前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
Cosmoshhhyyy11 分钟前
《Effective Java》解读第54条:返回零长度的数组或者集合,而不是null
java·开发语言·python
sleven fung15 分钟前
GPT4All 本地大语言模型运行环境介绍
python·gpt·ai·langchain
zyl8372118 分钟前
Python 四大核心数据结构:列表、字典、元组、集合
数据结构·windows·python
燐妤21 分钟前
现代 Python Web 框架:FastAPI实战指南
python·fastapi
清风一徐23 分钟前
Python函数基础
开发语言·python
花落yu24 分钟前
【无标题】
pytorch·python·深度学习