赞
踩
题目地址:https://leetcode.cn/problems/find-the-middle-index-in-array/
nums[1_size-1]求和为0
,此时中心下标是0
;第二种是nums[0_size-2]求和为0
,此时中心下标是size-1
。等量关系
来优化求解速度,即先求出数组总和sum
,再考虑以下等量关系:sum - nums[i] - nums[0_i]`的累加和
】= 【nums[0_i]的累加和
= 除去中心元素的左半部分】class Solution { public int findMiddleIndex(int[] nums) { int size = nums.length; if(size == 1){ return 0; } int sum = 0; for(int i = 0 ; i < size ; i++){ sum += nums[i]; } //第一种情况 if(sum - nums[0] == 0){ return 0; } //中间的其他情况 int left_sum = nums[0]; for(int j = 1; j < size - 1; j++){ if(left_sum == (sum - left_sum - nums[j])){ return j; } else{ left_sum += nums[j]; } } //第二种情况 if(left_sum == 0){ return size - 1; } else{ return -1; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。