python实现leetcode之47. 全排列 II

解题思路

如果只有一项,排列就是只有一个
否则,将除第一个元素以外的排序,然后将第一个元素插入排列的任意位置产生完整的排列

47. 全排列 II

代码

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        first, *rest = nums
        if not rest: return [[first]]
        
        rest_perms = self.permuteUnique(rest)
        perms = []
        for p in rest_perms:
            for i in range(len(p)+1):
                pp = [*p[:i], first, *p[i:]]
                if pp not in perms:
                    perms.append(pp)
        return perms

效果图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2]输出:[[1,1,2],[1...
    huxq_coder阅读 231评论 0 1
  • 思路分析: 这一题是在 「力扣」第 46 题:“全排列” 的基础上增加了“序列中的元素可重复”这一条件。因此我们还...
    李威威阅读 1,823评论 0 4
  • 今日主题:回溯。 回溯算法的模板image.png其中,1、路径:也就是已经做出的选择。2、选择列表:也就是你当前...
    sirenyunpan阅读 308评论 0 0
  • 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [...
    刻苦驴哝阅读 151评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,135评论 0 4