正确的排列代码在特殊情况下给出错误的答案

问题描述 投票:0回答:1

Link to Question 对于这个问题,我写了这段代码 -

from typing import List

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        ans = []

        def backtrack(index, nums):
            if index == len(nums):
                ans.append(nums.copy())
                return 
            
            for i in range(index, len(nums)):
                if i > index and nums[i] == nums[i-1]:  # checking for duplicate values
                    continue
                nums[index], nums[i] = nums[i], nums[index]
                backtrack(index + 1, nums)
                nums[index], nums[i] = nums[i], nums[index]

        backtrack(0, nums)
        return ans

它对于给定的测试用例运行良好,但不适用于所有测试用例。我知道出了什么问题。但是什么,特别是代码行

if i > index and nums[i] == nums[i-1]:  # checking for duplicate values
                    continue

为什么这些行不能避免重复排列,它是在组合中工作,而不是在排列中。

我已经厌倦了 chatGPT 和 AI。我们将不胜感激您的帮助。

我已经不再使用 Google 和 AI 工具了。

python-3.x recursion logic permutation
1个回答
0
投票

代码将 nums[index] 与 nums[i] 交换,因此检查重复值应该是

if i > index and nums[i] == nums[index]:  # checking for duplicate values
                    continue
© www.soinside.com 2019 - 2024. All rights reserved.