zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):回溯算法类:第47题:全排列 II:给定一个可包含重复数字的序列,返回所有不重复的全排列。

    题目:
    全排列 II:给定一个可包含重复数字的序列,返回所有不重复的全排列。
    思路:
    在第46题的基础上,增加了判断是否是重复的判断,借助findOut来判断新的数是否重复的使用。
    程序:
    class Solution:
        def permuteUnique(self, nums: List[int]) -> List[List[int]]:
            nums.sort()
            result = []
            auxiliary = []
            findOut = [0 for _ in range(len(nums))]
            def backtrack(nums, auxiliary, result):
                if len(auxiliary) == len(nums):
                    result.append(auxiliary[:])
                    return 
                for index in range(len(nums)):
                    if index >= 1 and nums[index - 1] == nums[index]:
                        if findOut[index - 1] == 0:
                            continue
                    if findOut[index] == 1:
                        continue
                    auxiliary.append(nums[index])
                    findOut[index] = 1
                    backtrack(nums,auxiliary,result)
                    auxiliary.pop()
                    findOut[index] = 0
            backtrack(nums,auxiliary,result)
            return result
  • 相关阅读:
    CPSR_cxsf
    C的xml编程libxml2(转)
    showModalDialog 使用详解
    SecureCRT 6.7.4 安装
    Nokia Qt SDK 1.1的开发环境的搭建
    ARM寄存器介绍
    ucos在xp平台下开发环境搭建
    用JavaScript实现让浏览器停止载入页面
    makefile变量使用及其条件判断
    Makefile中指示符“include”、“include”和“sinclude”的区别
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12856417.html
Copyright © 2011-2022 走看看