724. 寻找数组的中心下标

给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
输入:nums = [1, 7, 3, 6, 5, 6]
输出:3

  • 时间复杂度:对数组进行线性扫描。复杂度为 O(n)
  • 空间复杂度:O(1)

    1. //前缀和解法
    2. func pivotIndex(nums []int) int {
    3. total := 0 //1,空和,标记的一侧没有元素
    4. for _, v := range nums {
    5. total += v //2,先遍历一遍数组,得到所有的和
    6. }
    7. sum := 0
    8. for i, v := range nums { //3,遍历前数组,当 左sum== 右total-sum-v 时,返回中心指针
    9. if 2*sum + v == total {
    10. return i
    11. }
    12. sum += v //4,sum的定义,累加器存储
    13. }
    14. return -1
    15. }