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

为什么我的数组旋转解法本地运行正确但Leetcode提交报错?

问题原因分析
  • 核心问题:没有按照题目要求原地修改输入的nums数组
    题目注释明确标注了rtype: None Do not return anything, modify nums in-place instead.,你当前的代码只是生成了新的拼接后的数组num2并打印,全程没有修改传入的nums变量本身的内容。LeetCode判题时只会读取输入的nums的最终值,不会读取打印内容,因此会判定结果错误。你本地测试时只看了打印的num2的结果,所以误以为逻辑正确,实际如果调用方法后打印原nums数组,会发现nums完全没有变化。
  • 边界处理缺失:没有处理k大于数组长度的情况
    当k的值大于等于数组长度时,len(nums)-k会得到负数,你写的两个for循环的range范围直接就会出错。实际上数组旋转k次等价于旋转k % len(nums)次,需要先对k做取模处理。
修正后的参考代码
class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        n = len(nums)
        k = k % n  # 处理k大于数组长度的边界情况
        # 给nums全切片赋值,直接修改原数组内容,符合原地修改要求
        nums[:] = nums[n - k:] + nums[:n - k]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:02