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

LeetCode旋转数组问题求助:本地运行正确但平台判错

旋转数组题目代码在LeetCode不生效的问题排查与修复

核心原因:未满足原地修改要求

LeetCode的这道旋转数组题要求直接修改输入的nums数组,而非返回新数组。你的代码创建了新数组res并返回,但原nums数组完全没被修改,评测系统检测到原数组仍为初始状态,因此显示输出为原数组。

代码逻辑的其他错误

  1. 最后k个元素的获取方式错误:
    你用nums[-1:k:-1]无法正确拿到最后k个元素。以示例输入k=3为例,这个切片会得到[7,6],反转后仅为[6,7],漏掉了元素5。正确获取最后k个元素的写法是nums[-k:],直接就能得到[5,6,7],无需额外反转。

  2. 未处理k大于数组长度的情况:
    当k的值大于数组长度时(比如k=10,数组长度为7),实际等效于向右移动k % len(nums)步。不处理这种情况会导致切片逻辑出错,比如nums[:-10]会等同于nums[:],完全不符合预期。

修复后的代码

符合LeetCode要求的原地修改版本

def rotate(nums: list, k: int):
    n = len(nums)
    k = k % n  # 修正k的值,处理k超过数组长度的情况
    nums[:] = nums[-k:] + nums[:-k]  # 原地修改原数组

这个写法直接通过切片赋值修改原nums,完全符合题目要求的原地操作逻辑,同时覆盖了所有边界情况。

本地测试用的返回新数组版本

如果只是本地测试需要返回新数组,可以用下面的修正版:

def rotate(nums: list, k: int):
    n = len(nums)
    k = k % n
    return nums[-k:] + nums[:-k]

这个版本修正了元素获取逻辑,同时处理了k过大的问题,本地运行会得到正确结果,但LeetCode上必须使用原地修改的写法才能通过评测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:46:11