你好,我是一個Java noob,我無法理解這段代碼。打印不同三元組的方法
下面是代碼:
//print distinct triples (i, j, k) such that a[i] + a[j] + a[k] = 0
public static void printAll(int[] a) {
int N = a.length;
Arrays.sort(a);
for (int i = 0; i < N; i++) {
for (int j = i+1; j < N; j++) {
int k = Arrays.binarySearch(a, -(a[i] + a[j]));
if (k > j) StdOut.println(a[i] + " " + a[j] + " " + a[k]);
}
}
}
我不明白安靜此行
int k = Arrays.binarySearch(a, -(a[i] + a[j]));
誰能幫助我? 非常感謝。
您是否閱讀過該方法的文檔?你知道什麼是二進制搜索嗎? – njzk2 2014-09-30 19:28:28
是的,我知道二分查找,但是讓我困惑的是爲什麼在這裏使用 - (a [i] + a [j])。對不起,我是一個初學者:( – user3342026 2014-09-30 19:32:13
)我們正在尋找驗證a [k] + a [j] + a [i] == 0的a [k]值,即'a [k] = - (a [j] + a [i])'沒有別的, – njzk2 2014-09-30 19:34:16