WiggleSort:给出错误的输出?

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

我正在尝试解决 LeetCode 问题 324。Wiggle Sort II](https://leetcode.com/problems/wiggle-sort-ii/description/):

给定一个整数数组

nums
,将其重新排序,使得
nums[0] < nums[1] > nums[2] < nums[3]...

您可能假设输入数组始终具有有效答案。

class Solution:
    def wiggleSort(self, nums):
        nums.sort()

        smallnums = nums[:len(nums)//2]
        largenums = nums[len(nums)//2:]

        newArr = []

        for i in range(len(smallnums)):
            newArr.append(smallnums[i])

            if i < len(largenums):
                newArr.append(largenums[i])

        if len(largenums) > len(smallnums):
            newArr.append(largenums[-1])

        return newArr

将本地代码复制/粘贴到 LeetCode 中会得到不同的输出数组,如下所示:

输入:

[1,3,2,2,3,1]

输出:

[1,1,2,2,3,3]

预期:

[2,3,1,3,1,2]

但是我的 VSCode / 本地终端给出了

[1,2,1,3,2,3]
的正确输出,但 LeetCode 给出了完全不同的输出。我在这里错过了什么吗?这怎么可能?

python arrays python-3.x algorithm output
1个回答
0
投票

问题是你的函数是返回一个新列表,但是代码挑战没有提到返回列表。相反,它说您应该重新排序函数作为参数获取的列表。这意味着:到位。当您的代码对列表进行“排序”时,这就是正在测试的内容。剩下的所有事情都与newArr有关,这与预期结果无关。重新排序应该发生在

nums
,而不是任何其他列表。
    

© www.soinside.com 2019 - 2024. All rights reserved.