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

Python数组平衡索引代码异常排查:为何部分用例返回错误结果?

问题排查:数组平衡索引查找函数失效

需求说明

给定整数数组,需找到索引N,使得N左侧元素之和等于右侧元素之和,若无满足条件的索引则返回-1。

用户代码

def find_even_index(arr):
    #your code here
    for i in range(len(arr)):
        if sum(arr[0:i]) == sum(arr[i+1:len(arr)]):
            return i
        else:
            return -1

问题根源

这段代码的核心问题是else分支里的return -1放在了循环内部:

  • 当第一次循环(i=0)时,如果左右和不相等,代码会直接返回-1并终止整个函数,根本不会继续检查后续的索引。
  • 比如你提供的测试数组,正确索引是12,但代码在i=0时就判定左右和不等,直接返回-1,完全没机会遍历到i=12的情况。

修复后的代码

把return -1移到循环结束之后,确保遍历完所有索引都没找到符合条件的才返回-1:

def find_even_index(arr):
    for i in range(len(arr)):
        if sum(arr[:i]) == sum(arr[i+1:]):
            return i
    return -1

额外优化(可选)

每次调用sum()会重新计算子数组的和,对于大数组效率较低。可以用前缀和的方式优化,减少重复计算:

def find_even_index(arr):
    total_sum = sum(arr)
    left_sum = 0
    for i, num in enumerate(arr):
        # 右侧和 = 总和 - 左侧和 - 当前元素
        right_sum = total_sum - left_sum - num
        if left_sum == right_sum:
            return i
        left_sum += num
    return -1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:55:19