题目
给定一个整数类型的数组nums,请编写一个能够返回数组“中心索引”的方法。
我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,那么返回-1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。
思路
根据中心索引的定义,某个数左侧元素之和等于右侧元素之和。
遍历所有数,边遍历边计算其左边、右边一元素之和。
class Solution:
def pivotIndex(self, nums: List[int]) -> int:
# 前缀和
left, right = 0, sum(nums)
for i, num in enumerate(nums):
if left == right - left - num:
return i
left += num
return -1