给定一个零索引数组 & 该数组的平衡索引

新手上路,请多包涵

给出了一个由 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 许可协议

阅读 412
2 个回答

Javascript 100 分

function solution(V) {

    var sum = 0;
    for (i=0; i < V.length; i++) {
      sum += V[i];
    }

    var leftSum= 0;
    var rightSum = 0;

    for (j=0; j < V.length; j++) {
      rightSum = sum - (leftSum + V[j]);
      if(leftSum == rightSum) {
          return j;
      }
      leftSum += V[j];
    }
    return -1;
}

原文由 Eko Bayu 发布,翻译遵循 CC BY-SA 3.0 许可协议

100% - 爪哇

int solution(int A[], int N) {

    long sum = 0;
    for (int i = 0; i < A.length; i++) {
        sum += (long) A[i];
    }
    long leftSum = 0;
    long rightSum = 0;

    for (int i = 0; i < A.length; i++) {
        rightSum = sum - (leftSum + A[i]);
        if (leftSum == rightSum) {
            return i;
        }
        leftSum += A[i];
    }
    return -1;
}

}

原文由 Asiri Liyana Arachchi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏