前言
一、图解
1.1
当前数组【1,7,3,6,5,6】,中心索引的值就是元素6。
可以发现,中心元素6的左右两边,左边之和 == 右边之和,等价于 左边之和 + 6 == 右边之和 + 6。
左右两个部分会有个共同元素6。
1.2
可以推出,初始状态的时候,左右两个部分会有个共同元素1。如下图所示:
此时,应该判断: 左边之和 + 1 是否等于 右边之和 + 1。
这时候,“左边之和 + 1 ”就是数组第一个元素的值,“右边之和 + 1”就是数组的总和。
1.3
最终代码如下:
int pivotIndex(int* nums, int numsSize){
int all_sum = 0, left_sum = 0;
for(int itera = 0; itera < numsSize; itera++ )
{
all_sum += nums[itera];
}
for(int itera = 0; itera < numsSize; itera++ )
{
left_sum += nums[itera];
if(left_sum == all_sum)
{
return itera;
}
else
{
all_sum -= nums[itera];
}
}
return -1;
}