メソッドは、ABS(a[i] - val) が k 個の最大の評価となるように、k 個の要素 a[i] を返す必要があります。私のコードは、val より大きい整数に対してのみ機能します。val より小さい整数の場合は失敗します。java.util.Arrays 以外のものをインポートせずにこれを行うことはできますか? 誰かが私を啓発してもらえますか?どんな助けでも大歓迎です!
public static int[] farthestK(int[] a, int val, int k) {// This line should not change
int[] b = new int[a.length];
for (int i = 0; i < b.length; i++) {
b[i] = Math.abs(a[i] - val);
}
Arrays.sort(b);
int[] c = new int[k];
int w = 0;
for (int i = b.length-1; i > b.length-k-1; i--) {
c[w] = b[i] + val;
w++;
}
return c;
}
テストケース:
@Test public void farthestKTest() {
int[] a = {-2, 4, -6, 7, 8, 13, 15};
int[] expected = {15, -6, 13, -2};
int[] actual = Selector.farthestK(a, 4, 4);
Assert.assertArrayEquals(expected, actual);
}
There was 1 failure:
1) farthestKTest(SelectorTest)
arrays first differed at element [1]; expected:<-6> but was:<14>
FAILURES!!!
Tests run: 1, Failures: 1