我正在尝试解决 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 给出了完全不同的输出。我在这里错过了什么吗?这怎么可能?
问题是你的函数是返回一个新列表,但是代码挑战没有提到返回列表。相反,它说您应该重新排序函数作为参数获取的列表。这意味着:到位。当您的代码对列表进行“排序”时,这就是正在测试的内容。剩下的所有事情都与newArr
有关,这与预期结果无关。重新排序应该发生在
nums
,而不是任何其他列表。