一、题目
二、函数原型
int pivotIndex(int* nums, int numsSize)?
三、思路
首先要理解正确中心下标,中心下标左侧元素之和等于右侧元素之和,比较时是不包含中心下标所指元素的。
先将数组和求出来记为sum,再遍历数组,遍历到某一下标处时记其左侧元素之和为leftsum,则右侧元素之和就为sum - leftsum - 当前位置元素。比较左、右侧元素和,如果相等则当前位置为中心下标。若全部遍历完后,仍没有找到中心下标则返回-1。
四、代码
int pivotIndex(int* nums, int numsSize) {
int sum = 0;
for (int i = 0; i < numsSize; i++)//数组求和
{
sum += nums[i];
}
int leftsum = 0;//中心下标左侧元素和
for (int i = 0; i < numsSize; i++)//遍历数组,寻找中心下标
{
if (sum - leftsum - nums[i] == leftsum)
return i;
leftsum += nums[i];
}
return -1;
}