You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 189. Rotate Array代码本地可行但平台报错,求排查

LeetCode 189. Rotate Array 代码报错原因及修复

你的代码核心问题是没有真正原地修改输入的nums数组:

  • 执行nums = deque(nums)时,局部变量nums被重新指向了一个新的deque对象,和函数传入的原数组引用彻底断开。
  • 后续转成list赋值给nums,也只是修改了这个局部变量,原数组根本没被改动。LeetCode判题系统会检查传入的原数组内容,自然识别不到你的修改,所以报错。

而本地IDE看起来“正确”,只是因为你打印了这个新的局部变量nums,但原数组其实没变化——你可以在本地试试打印函数外部的原数组,就能发现问题。

修复方案1(保留deque实现)

不用重新赋值nums,而是通过切片替换原数组的内容:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        from collections import deque
        dq = deque(nums)
        for _ in range(k):
            dq.appendleft(dq.pop())
        # 原地修改原数组的全部内容
        nums[:] = list(dq)

修复方案2(更高效的切片实现)

不需要额外数据结构,直接用Python数组切片原地修改,还能处理k大于数组长度的情况:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        n = len(nums)
        k = k % n  # 取模避免重复旋转
        nums[:] = nums[-k:] + nums[:-k]

内容的提问来源于stack exchange,提问作者Lukas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:35:59