力扣题目:寻找数组的中心下标

时间:2024-05-02 21:11:21

    力扣题目:寻找数组的中心下标

题目链接: 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
    }
}