当前位置: 首页 > 知识库问答 >
问题:

给定的零索引数组

庄浩言
2023-03-14

想改进这个问题吗?更新问题,让它只通过编辑这篇文章来关注一个问题。

给出了一个由N个整数组成的零索引数组A。此数组的平衡指数是任意整数P,因此0≤ P

例如,考虑以下由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

现在我必须写一个函数:

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.

共有3个答案

锺离德运
2023-03-14

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;
}
姬高扬
2023-03-14

用c#100%得分

using System;
class Solution {
    public int solution(int[] A) {
        // First calculate sum of complete array as `sum_right`
        long sum_right = 0;
        for (int i = 0; i < A.Length; i++)
        {
            sum_right += A[i];
        }

        // start calculating sum from left side (lower index) as `sum_left`
        // in each iteration subtract A[i] from complete array sum - `sum_right`
        long sum_left = 0;
        for (int p = 0; p < A.Length; p++)
        {
            sum_left += p - 1 < 0 ? 0: A[p-1];
            sum_right -= A[p];
            if (sum_left == sum_right)
            {
                 return p;
            }
        }
        return -1;


    }
}
国言
2023-03-14

100% - Java

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;
}

}

 类似资料:
  • 给出了一个由N个整数组成的零索引数组。这个数组的平衡指数是任意整数P,0≤ P 例如,考虑下面的数组A,由n=8个元素组成: P=1是这个数组的平衡指数,因为: P=3是该数组的平衡指数,因为: P=7也是一个均衡指数,因为: 没有索引大于7的元素。 P=8不是平衡指数,因为它不满足条件0≤ P 现在我要写一个函数: 给定一个由N个整数组成的零索引数组a,它返回其任何平衡索引。函数应该返回−1如果

  • 如果某些数组索引不能配对,我将如何找到唯一正整数数组的最大和? 例如,我们有一个数组:[8,2,1,3,9,4] 索引(0,4)和(4,5)处的元素彼此不喜欢。 在这种情况下,最大和为:8 2 1 3 4=18 假设这是100个条目的规模和多达一半的约束,您将如何处理这个问题? 是否有一个像图形这样的数据结构是有用的还是有一些DP?我主要关心的是高效的运行时。

  • 为什么我不能得到数组中给定对象的索引? 期望的结果显然是2…

  • 问题内容: 简要地说:存在类似的问题,最佳答案建议使用。我需要同样的东西,但是需要一个矩阵。 我有两个数组: 它们共同构成应增加的索引: 我想得到这个矩阵: 矩阵将很小(例如5×5),索引的数量将很大(大约10 ^ 3或10 ^ 5)。 那么,有什么比-loop更好(更快)的东西吗? 问题答案: 您仍然可以使用。关键是要转换和成扁平状索引的单一一维数组。 如果矩阵是X ,你可以申请到,构建从结果矩

  • 我想用Javascript实现合并排序作为一种学习经验。我有mergeSort(unsortedArray)函数,它接受一个未经排序的数组,并使用合并排序策略对其进行排序。mergeSort()调用merge(leftArray,rightArray),后者将两个数组合并在一起,得到一个数组。 我认为问题出在merge()函数上。在数组[8,8,7,5,4,6,3,2,1,5,9,8,7,6,5,

  • 尝试计算给定数字的阶乘中尾随零的数量有点困难。这是Codewars-无法让我的通过的挑战之一。 我想我在这里走错了路,可能还有更优雅的红宝石路。这是我迄今为止所做的。