给出了一个由 N 个整数组成的零索引数组 A。该数组的平衡索引是任何整数 P 使得 0 ≤ P < N 并且较低索引的元素之和等于较高索引的元素之和,即 A[0] + A[1] + … + A[P-1] = A[P+1] + … + A[N-2] + A[N-1]。假设零元素之和等于 0。如果 P = 0 或 P = N−1,则可能发生这种情况。
例如,考虑以下由 N = 8 个元素组成的数组 A:
A[0] = -1
A[1] = 3
A[2] = -4
A[3] = 5
A[4] = 1
A[5] = -6
A[6] = 2
A[7] = 1
P = 1 是该数组的平衡索引,因为:
A[0] = −1 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7]
P = 3 是这个数组的平衡指数,因为:
A[0] + A[1] + A[2] = −2 = A[4] + A[5] + A[6] + A[7]
P = 7 也是一个均衡指数,因为:
A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0
并且没有索引大于 7 的元素。
P = 8 不是均衡指标,因为它不满足条件 0 ≤ P < N。
现在我必须编写一个函数:
int solution(int A[], int N);
即,给定一个由 N 个整数组成的零索引数组 A,返回它的任何平衡索引。如果不存在均衡指数,该函数应返回 -1。
例如,给定上面显示的数组 A,该函数可能返回 1、3 或 7,如上所述。
假使,假设:
N is an integer within the range [0..100,000];
each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].
这里有一些复杂性:
Elements of input arrays can be modified.
原文由 Sirat Binte Siddique 发布,翻译遵循 CC BY-SA 4.0 许可协议
Javascript 100 分