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

为什么我的sum_consecutives函数没有遍历完整数组?

问题根因

你的代码循环遍历范围是range(0, len(s)-1),受range左闭右开的特性限制,实际只会遍历到数组下标为len(s)-2的位置,仅处理到倒数第二个元素和相邻元素的对比,最后一组连续元素的和始终没有被添加到结果列表中,所以会缺失最后一位的计算结果。

修复方案

最小改动版本

仅需在原有代码的return语句前,增加一行处理最后一组元素和的逻辑即可:

def sum_consecutives(s):
    sum = 0
    X = []
    for i in range(0,len(s)-1):
        if s[i] == s[i+1]:
            sum += s[i]
        else:
            X.append(sum+s[i])
            sum = 0
    # 新增行:处理最后一组连续元素的和
    X.append(sum + s[-1])
    return X

优化版本

增加空数组边界判断,逻辑更易读:

def sum_consecutives(s):
    # 处理空输入的边界情况
    if not s:
        return []
    current_sum = s[0]
    res = []
    for i in range(1, len(s)):
        if s[i] == s[i-1]:
            current_sum += s[i]
        else:
            res.append(current_sum)
            current_sum = s[i]
    # 追加最后一组的和
    res.append(current_sum)
    return res

验证结果

输入测试用例[1,1,7,7,3]调用函数,返回结果为[2, 14, 3],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:09:02