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

LeetCode寻找数组中心索引:Python代码特定用例失败原因排查

问题分析与修正

你的代码存在几个关键错误,导致部分测试用例失败:

1. 数组长度判断错误

题目中数组长度的约束是 1 <= nums.length <= 10^4(即1到10000),但你的代码写成了 1 <= len(nums) <= 104。当测试用例的数组长度超过104时,代码会直接返回-1,完全不符合题意,这是导致部分测试用例失败的核心原因之一。

2. 多余的元素范围判断

题目虽然给出了元素的范围约束,但测试用例不会违反该规则,且题目并未要求元素超出范围时返回-1。这个判断属于多余逻辑,可能会导致合法测试用例被错误返回-1。

3. 逻辑效率极低(冗余两层循环)

你的代码通过两层循环计算后缀和,时间复杂度为O(n²)。当数组长度较大时(比如接近10000),会出现超时问题,即使部分测试用例能运行通过,也不符合算法优化的要求。


修正后的代码

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        total_sum = sum(nums)
        sum_left = 0
        for i in range(len(nums)):
            # 右侧和 = 总和 - 左侧和 - 当前元素
            if sum_left == total_sum - sum_left - nums[i]:
                return i
            sum_left += nums[i]
        return -1

代码说明

  1. 先计算数组的总和total_sum,避免重复计算后缀和
  2. 遍历每个索引i,维护左侧元素的累加和sum_left
  3. 右侧元素的和可通过total_sum - sum_left - nums[i]快速推导(总和减去左侧和,再减去当前元素)
  4. 当左侧和等于右侧和时,直接返回当前索引i;遍历结束未找到则返回-1

这个方案将时间复杂度优化到O(n),同时修复了所有逻辑错误,符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:47:47