LeetCode上
寻找数组的中心索引
,简单难度,记录解题思路
其实搞清楚这个中心索引的定义就好办了,按照题意中心索引所在的数,左右两边所有数的和相等
所以可以这样表示:数组全部数之和 = 左边全部数之和 + 任意位置的数 + 右边全部数之和
而当 左边全部数之和 === 右边全部数之和的时候,对应的这个任意位置就是中心位置了
var pivotIndex = function(nums) {
// 中心位置的定义是左右两边的和相等, 并且不包括自己
// 数组总共的和 === 左侧的和 + 中心位置数 + 右侧的和
// reduce 累加全部数据的和
let sum = nums.reduce((a,b) => {return a+b},0)
// 左侧数据的和
let left = 0
// 再次遍历数组
for(let i = 0; i<nums.length; i++) {
// 计算对应i的右侧总和
let right = sum - nums[i] - left
// 如果左右相等,那么i就是中心索引
if(left === right) return i
// 如果不相等left累加,开始下一位判断
left += nums[i]
}
// 数组遍历完还没有相等的,就返回-1
return -1
};