算法 寻找数组的中心索引

前言

链接地址

在这里插入图片描述


一、图解

1.1

在这里插入图片描述
当前数组【1,7,3,6,5,6】,中心索引的值就是元素6。
可以发现,中心元素6的左右两边,左边之和 == 右边之和,等价于 左边之和 + 6 == 右边之和 + 6。
左右两个部分会有个共同元素6。

1.2

可以推出,初始状态的时候,左右两个部分会有个共同元素1。如下图所示:

在这里插入图片描述
此时,应该判断: 左边之和 + 1 是否等于 右边之和 + 1。
这时候,“左边之和 + 1 ”就是数组第一个元素的值,“右边之和 + 1”就是数组的总和。

1.3

最终代码如下:

int pivotIndex(int* nums, int numsSize){

    int all_sum = 0, left_sum = 0;
    for(int itera = 0; itera < numsSize; itera++ )
    {
        all_sum += nums[itera];
    }

    for(int itera = 0; itera < numsSize; itera++ )
    {
        left_sum += nums[itera];

        if(left_sum == all_sum)
        {
            return itera;
        }
        else
        {
            all_sum -= nums[itera];
        }
    }

    return -1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值