寻找中间元素下标

该博客介绍了一个编程问题,即在整数数组中找到一个下标mid,使得mid左边元素之和等于右边元素的和。通过计算数组总和,然后遍历数组找到满足条件的mid。代码示例给出了C语言的解决方案,并提供了两个测试用例。

目录

1.题目 

2.思路解析

3.代码 

4.总结


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.总结

希望大家多多支持与鼓励!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值