实现了一种有效的k互补整数对与o(nlogn)匹配的方法。下面是我的代码,它不起作用。有谁能帮我解决这个问题吗?我试过了,但自己解决不了
public static StringBuffer newFunction(int arr[], int k) {
Arrays.sort(arr);
int result = 0;
StringBuffer sb = new StringBuffer();
int j = arr.length - 1;
int i = 0;
while (i <= j) {
if (arr[i] + arr[j] == k) {
sb.append("{" + arr[i] + "," + arr[j] + "}" + ", ");
result++;
} else if ((arr[i] + arr[j]) < k) {
i++;
} else {
j--;
}
}
System.out.println(result);
return sb;
}
最佳答案
找到一对索引时,缺少索引的增量和减量。相关代码修改如下:
while (i <= j) {
if (arr[i] + arr[j] == k) {
sb.append("{" + arr[i] + "," + arr[j] + "}" + ", ");
result++;
i++; // increment
j--; // decrement
} else if ((arr[i] + arr[j]) < k) {
i++;
} else {
j--;
}
}
有了这个修改,它应该可以工作:
int myArray[] = {8,5,7,10,2,13,11,4,9,6,1,3};
System.out.println(newFunction(myArray, 15));
// 5
// {2,13}, {4,11}, {5,10}, {6,9}, {7,8},
关于java - 提高K个互补数组对成O(NlogN)的效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41794249/