数组求中心下标,存在返回下标,不存在返回-1
中心下标:
数组中某个元素的左侧所有元素之和等于右侧元素之和
思路:
数组的全部元素之和为total,第i个元素左侧和为sum,则右侧和为total-nums[i]-sum, 两边相等的话 sum=total-nums[i]-sum,所以得到 2sum+nums[i] = total
var findIndexMiddle = function(nums){
const total = nums.reduce((a,b)=>a+b);
let sum = 0;
for(let i=0; i<nums.length; i++){
if(2*sum + nums[i] === total){
return i
}
sum += nums[i]
}
return -1
}
时间复杂度:o(n)
空间复杂度:o(1)