📅  最后修改于: 2023-12-03 14:57:26.032000             🧑  作者: Mango
给定一个整数数组 nums,找到并返回其中心索引的位置。数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果不存在中心索引,返回 -1。如果有多个中心索引,则返回最左侧的一个。
Input: nums = [1, 7, 3, 6, 5, 6]
Output: 3
Explanation: 左侧元素和为 1 + 7 + 3 = 11,右侧元素和为 5 + 6 = 11,索引 3 满足相等条件,所以返回 3。
Input: nums = [1, 2, 3]
Output: -1
Explanation: 数组没有中心索引,返回 -1。
假设我们已经找到了中心索引,可以用以下方法计算:
以下是 Python 实现:
def pivotIndex(nums):
total = sum(nums)
leftSum = 0
for i in range(len(nums)):
if leftSum == (total - leftSum - nums[i]) / 2:
return i
leftSum += nums[i]
return -1
该算法的时间复杂度为 O(n),其中 n 为数组的长度,因为我们只需要在数组中遍历一遍即可找到中心索引。