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
  • 相关阅读:
    cocos2d-x避免手动修改android.mk文件来编译
    Android.mk详解
    cocos2dx 安卓编译问题收集
    Mac下部署Android开发环境附加NDK
    SpringMVC关于json、xml自动转换的原理研究
    SpringMVC的拦截器
    Spring3中的mvc:interceptors标签配置拦截器
    Spring常用的接口和类(三)
    Spring常用的接口和类(二)
    LeetCode:寻找旋转排序数组中的最小值【153】
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12856417.html
Copyright © 2011-2022 走看看