数组算法题:寻找数组的中心索引

给你一个整数数组nums,请计算数组的中心下标。

数组中心下标时数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。

如果中心下标位于最左端,那么左侧数之和视为0,因为在下标的左侧不存在元素,这一点对于中心下标位于最右端同样适用。

如果数组有多个中心下标,应该返回最靠近左边的那一个,如果数组不存在中心下标,返回-1;

示例1:

输入:nums = [1 , 7 , 3 , 6 , 5 , 6]

输出:3

解释:

中心下标为3;

左侧数之和:1 + 7 + 3 = 11;

右侧数之和:5 + 6 = 11;

示例2:

输入:nums = [2 , 1 , -1]

输出:0

解释:

中心下标是0;

左侧数之和:0  // 下标0左侧不存在元素

右侧数之和:1 + -1 = 0;

示例3:

输入:nums = [1 , 2 , 3]

输出:-1

解释:

数组中不存在满足此条件的中心下标 

var pivotIndex = function(nums){
    let res = -1;
    if(nums.length == 0) return res;
    let sum = nums.reduce((total , value) => { // 数组中的元素相加的属性
        return total + value;    // total是所有元素的和,value是当前元素
    });
    let left = 0; // 声明左侧数值的和
    
    for(let i = 0; i < nums.length; i ++){
        if(left == sum - nums[i] - left){ // 判断左侧数值的和是否等于右侧数值
            return res = i;
        }
        left += nums[i]
    }
    return res;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值