724. 寻找数组的中心下标
给你一个整数数组 nums
,请编写一个能够返回数组 “中心下标” 的方法。
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
输入:nums = [1, 7, 3, 6, 5, 6]
输出:3
- 时间复杂度:对数组进行线性扫描。复杂度为 O(n)
空间复杂度:O(1)
//前缀和解法
func pivotIndex(nums []int) int {
total := 0 //1,空和,标记的一侧没有元素
for _, v := range nums {
total += v //2,先遍历一遍数组,得到所有的和
}
sum := 0
for i, v := range nums { //3,遍历前数组,当 左sum== 右total-sum-v 时,返回中心指针
if 2*sum + v == total {
return i
}
sum += v //4,sum的定义,累加器存储
}
return -1
}