一、题目
二、函数原型
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; }