【数组相关】724. 寻找数组的中心索引

原题链接:https://leetcode-cn.com/problems/find-pivot-index/



从左到右一个个找吧,只不过并不需要每次寻找一个中心索引,都要计算左边和右边的和

我们可以先将数组的总和 sum 求出来,如示例1所示,总和 sum=28

接着来看

当中心索引 i=0 时 左边的和 leftSum=0 右边的和 rightSum=sum-leftSum-nums[i]=27

左右两边不相等,则中心所以后移

当中心索引 i=1 时,leftSum=leftSum+nums[i-1]=1,rightSum=sum-leftSum-nums[i]=20

左右两边不相等,则中心所以后移

当中心索引 i=2 时,leftSum=leftSum+nums[i-1]=8 ,rightSum=sum-leftSum-nums[i]=17

左右两边不相等,则中心所以后移

当中心索引 i=3 时,leftSum=leftSum+nums[i-1]=11 ,rightSum=sum-leftSum-nums[i]=11

左右两边相等,则 i=3 为当前的中心索引

代码:

class Solution {
    public int pivotIndex(int[] nums) {
        int sum=0;
        for(int num:nums){
            sum+=num;
        }
        int leftSum=0;
        int rightSum=0;
        for(int i=0;i<nums.length;i++){
            if(i==0){
                leftSum=0;
            }else{
                leftSum+=nums[i-1];
            }
            rightSum=sum-nums[i]-leftSum;
            if(rightSum==leftSum){
                return i;
            }
        }
        return -1;
    }
}
发布了88 篇原创文章 · 获赞 142 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u010189239/article/details/104789842