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
  • 相关阅读:
    PL/SQL注册码
    分页sql
    js获取url值
    C语言中的bool类型 stdbool.h
    语音朗读小程序
    50. Pow(x, n)
    二维数组旋转
    用一位数组代替二维数组作为形参使用
    单链表排序——交换数据成员
    C++重载输入流、输出流运算符
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12856417.html
Copyright © 2011-2022 走看看