力扣题目:寻找数组的中心下标
题目链接: 724.寻找数组的中心下标
题目描述
代码思路
根据题目内容,维护好前后缀和,然后从左到右遍历寻找合适的下标
代码纯享版
class Solution {
public int pivotIndex(int[] nums) {
int sumleft = 0, sumright = 0;
for(int i = 1; i < nums.length; i++){
sumright += nums[i];
}
if(sumleft == sumright){
return 0;
}
for(int i = 1; i < nums.length; i++){
sumleft += nums[i - 1];
sumright -= nums[i];
if(sumleft == sumright){
return i;
}
}
return -1;
}
}
代码逐行解析版
class Solution {
public int pivotIndex(int[] nums) {
int sumleft = 0, sumright = 0; //创建左侧和右侧的元素之和
for(int i = 1; i < nums.length; i++){ //右侧sumright把除了下标为0的所有数相加
sumright += nums[i];
}
if(sumleft == sumright){ //左侧没有元素,和为0,如果右侧元素和也为0,则返回下标0
return 0;
}
for(int i = 1; i < nums.length; i++){ //遍历从1开始的所有下标
//每次循环,左侧加上一个元素,右侧减少一个元素
sumleft += nums[i - 1];
sumright -= nums[i];
if(sumleft == sumright){ //如果左右两侧相等
return i; //返回下标i
}
}
return -1; //不存在中心下标,返回-1
}
}