实现了一种有效的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/

10-09 22:46