我无法正确运行所有测试用例,怎么了?

时间:2018-12-23 13:51:41

标签: java arrays algorithm return

在下面的编辑器中完成 divisibleSumPairs 函数。它应该返回符合条件的对的整数计数。

divisibleSumPairs 具有以下参数:

  • n :数组 ar

  • 的整数长度
  • ar :整数数组

  • k :将对和除以的整数

打印(i,j)对的数量,其中 i ar [i] + ar [j] 是均匀的被 k 整除。

我不知道怎么了,只有某些情况有效

  static int divisibleSumPairs(int n, int k, int[] ar) {
    int count = 0;
    for (int i=0; i<n; i++){
        for (int j=0; j<n; j++){
            if ((ar[i]<ar[j]) && ((ar[i]+ar[j])%k)== 0){
                count++;
            }
        }
    }
        return count;
}

1 个答案:

答案 0 :(得分:0)

主要问题是您检查 ar [i] ,而问题说明中显示 i

static int divisibleSumPairs(int n, int k, int[] ar) {
    int count = 0;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            if (i < j && (ar[i] + ar[j]) % k == 0) {
                count++;
            }
        }
    }
    return count;
}

该算法可以进一步优化为:

static int divisibleSumPairs(int n, int k, int[] ar) {
    int count = 0;
    for (int i = 0; i < n; i++){
        for (int j = i + 1; j < n; j++){
            if ((ar[i] + ar[j]) % k == 0) {
                count++;
            }
        }
    }
    return count;
}