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

k值大于数组长度时的数组左旋k位运行结果错误求助

数组左旋k位问题排查与修正

现有代码的核心问题

  • 缺失k值归一化逻辑:数组长度为n时,左旋k位等价于左旋k % n位,你示例中k=7、n=6的场景,实际只需要左旋1位,这一步处理缺失直接导致后续逻辑完全失效。
  • 硬编码操作全局source变量,没有使用函数传入的array参数,函数完全不具备复用性。
  • 语法错误:Python 单行注释使用#而非//,你编写的//Before this everything is alright.属于非法语法,会直接中断代码运行。
  • 分支逻辑不生效:当k大于数组长度时,i + k < j的判断永远为假,if分支全程不会执行,数组没有任何修改,这就是你输出原数组的直接原因。
  • 位移逻辑错误:temp = k - len(array) - 1的计算规则完全不符合左旋位移要求,就算进入elif分支也无法得到正确结果。

修正后的实现

Python中可以直接用切片快速实现需求,代码简洁且性能有保障:

def rotateLeft(array, k):
    n = len(array)
    # 处理k大于数组长度的场景,归一化k
    k = k % n
    # 左旋k位等价于将前k个元素移动到数组末尾
    return array[k:] + array[:k]

source = [10, 20, 30, 40, 50, 60]
print(rotateLeft(source, 7))

运行上述代码输出为[20, 30, 40, 50, 60, 10],和预期结果一致。

内容的提问来源于stack exchange,提问作者Md Irtiza Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:06:03