今天看啥  ›  专栏  ›  Taec0123

2021/01/28 每日一题 寻找数组的中心索引

Taec0123  · 简书  ·  · 2021-01-28 11:07

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
};



原文地址:访问原文地址
快照地址: 访问文章快照