求数组左右平衡值得索引
程序员文章站
2024-03-18 09:55:22
...
方法一,很土的办法,逐个遍历然后求和,再比较
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;
}
上一篇: 懒加载的实现原理