求数组左右平衡值得索引

来源:互联网 发布:ipv6根域名中国服务器 编辑:程序博客网 时间:2024/06/14 20:58

方法一,很土的办法,逐个遍历然后求和,再比较

int pivotIndex(int* nums, int numsSize) {    int left_sum=0;    int right_sum=0;    int j=0;    int i=0;    for(int i=0;i<numsSize;i++)    {        for(j=0;j<numsSize;j++)        {            if(j==i)            {                continue;            }            if(j<i){            left_sum+=nums[j];            }            if(j>i){                right_sum+=nums[j];            }        }        if(left_sum==right_sum)             return i;        left_sum=0;        right_sum=0;           }        return -1;}



方法二,来自评论区某个用户的

int pivotIndex(int* nums, int numsSize) {    int i = 0, sum = 0, result = -1, left = 0, right = 0;    int *arrsum = (int *)malloc(sizeof(int) * numsSize);    for(; i < numsSize; i++)    {        sum += *(nums + i);        *(arrsum + i) = sum;    }    for(i = 0; i < numsSize; i++)    {        left = *(arrsum + i) - *(nums + i);        right = sum - *(arrsum + i);        if(left == right)        {            result = i;            break;        }    }    return result;}



原创粉丝点击