我的提交是正确的,为什么还是不行?

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

我正在尝试在 Leetcode 上练习我的 Python。问题是189。旋转阵列。虽然在其他IDE中可以正常运行,但在Leetcode中仍然错误。这是我的代码:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        from collections import deque
        nums = deque(nums)
        for i in range(k):
            nums.appendleft(nums.pop())
        nums = list(nums)
        print(nums)

还是不知道。我的代码有什么问题?

python arrays
1个回答
0
投票

list(nums)
deque(nums)
将创建一个完全不同的列表对象,因此不认为它是就地替换列表。我认为您必须对索引
i
处的列表使用通用赋值语句(即
nums[i] = <value>
)。下面的代码是使用递归 dfs 和就地列表修改的方法之一

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        
        k = k % len(nums)
        def traverse(nums, i, k, value, count, origin):
            next_i = (i + k) % len(nums)
            if next_i != origin and count < len(nums):
                count = traverse(nums, next_i, k, nums[i], count + 1, origin)
            nums[i] = value
            return count

        count = 0
        offset = 0
        while count < len(nums):
            count = traverse(nums, k + offset, k, nums[offset], count + 1, offset + k)
            offset += 1
    
        return nums
© www.soinside.com 2019 - 2024. All rights reserved.