#10986. 找到数组的中间位置

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: Turing001

题目描述

给你一个下标从 0 开始的n个整数的数组 a ,请你找到 最左边 的中间位置 m (也就是所有可能中间位置下标最小的一个)。

中间位置 m 是满足 a[0] + a[1] + ... + a[m] == a[m+1] + a[m+2] + ... + a[n-1] 的数组下标。

如果 m == 0 ,左边部分的和定义为 0 。类似的,如果 m == n - 1 ,右边部分的和定义为 0 。

请你返回满足上述条件 最左边 的 m ,如果不存在这样的中间位置,请你返回 -1 。

输入格式

第一行:n

第二行:n个整数

输出格式

数组的中间位置

样例

输入1:

5
2 3 -1 8 4

输出1:

3

解释:下标 3 之前的数字和为:2 + 3 + -1 = 4。下标 3 之后的数字和为:4 = 4

输入2:

3
1 -1 4

输出2:

2

解释:下标 2 之前的数字和为:1 + -1 = 0。下标 2 之后的数字和为:0

输入3:

2
2 5

输出3:

-1

解释:不存在符合要求的 middleIndex 。

输入4:

1
1

输出4:

0

解释:下标 0 之前的数字和为:0。下标 0 之后的数字和为:0

数据范围与提示

1 <= n <= 100

-1000 <= a[i] <= 1000