题目

给定一个整数类型的数组nums,请编写一个能够返回数组“中心索引”的方法。
我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,那么返回-1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。

image.png

思路

根据中心索引的定义,某个数左侧元素之和等于右侧元素之和。
遍历所有数,边遍历边计算其左边、右边一元素之和。

  1. class Solution:
  2. def pivotIndex(self, nums: List[int]) -> int:
  3. # 前缀和
  4. left, right = 0, sum(nums)
  5. for i, num in enumerate(nums):
  6. if left == right - left - num:
  7. return i
  8. left += num
  9. return -1