目录
1.题目
在一组由int 组成的数组中找到最中间元素的下标mid,使得mid左边元素相加等于右边元素的和。
如果mid左边或右边没有元素,那么它的和为0.
如果找不到这样的元素下标输出-1
例:输入:arr[3]={2,3,2}
输出:1
例:输入:arr[4]={3,-1,-3,4}
输出:0
2.思路解析

我们先求出所有元素的和;
我们发现left_sum=right_sum,所以2*left+arr[mid]=sum;
我们让mid=0,依次往下尝试,知道找到mid;
输出mid的值。
3.代码
寻找中间元素的下标,使得左边元素之和等于右边元素之和 · 3bcb953 · 风夏/C语言进阶 - Gitee.com
#define _CRT_SECURE_NO_WARNINGS 1
//在一组由int 组成的数组中找到最中间元素的下标mid,使得mid左边元素相加等于右边元素的和。
//
//如果mid左边或右边没有元素,那么它的和为0.
//
//如果找不到这样的元素下标输出 - 1
#include<stdio.h>
//计算和
int count(int* arr, int mid)
{
int i = 0;
int sum = 0;
for (i = 0; i < mid; i++)
sum += arr[i];
return sum;
}
int main()
{
int arr[100] = { 0 };
int i = 0;
int n = 0;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
int left_sum = 0;
int sum = 0;
int mid = 0;
//总体的和
for (i = 0; i < n; i++)
{
sum += arr[i];
}
//判断
for (mid = 0; mid < n; mid++)
{
left_sum = count(arr, mid);
if (2 * left_sum + arr[mid] == sum)
{
printf("%d\n", mid);
return 0;
}
}
printf("-1\n");
return 0;
}
4.总结
希望大家多多支持与鼓励!
该博客介绍了一个编程问题,即在整数数组中找到一个下标mid,使得mid左边元素之和等于右边元素的和。通过计算数组总和,然后遍历数组找到满足条件的mid。代码示例给出了C语言的解决方案,并提供了两个测试用例。
3653

被折叠的 条评论
为什么被折叠?



