寻找数组的中心下标。采用双指针。

寻找数组的中心下标

给定一个整数数组nums,请编写一个能够返回数组“中心下标”的方法。

中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。

如果数组不存在中心下标,返回-1。如果数组有多个中心下标,应该返回最靠近左边的那一个。

注意:中心下标可能出现在数组的两端。

示例:

1输入:[1, 7, 3, 6, 5, 6]
2输出:3

思路

这里用到了双指针思路

  1. 数组中某一个下标,左右两边的元素之后相等,该下标即为中心索引
  2. 先统计出整个数组的总和,然后从第一个元素开始叠加,总和递减当前元素,叠加递增当前元素,
  3. 直到两个值相等

解题

 1public static int pivotIndex(int[] nums)
 2{
 3    int sum = 0;
 4    for(int i = 0; i < nums.length; i++)
 5    {
 6        sum += nums[i];
 7    }
 8    int total = 0;
 9    for(int i = 0; i < nums.length; i++)
10    {
11        total += nums[i];
12        if(sum == total)
13            return i;
14        sum -= nums[i];
15    }
16    return -1;
17}