算法-leetcode-每日一题-求数组中两两相加等于20的组合

分析:对数组先进行排序,时间复杂度为nlogn,然后用两个指针,一个begin,另一个end。前者不断增加,后者不断减少,在这个过程中比较,时间复杂度为n,则平均时间复杂度为nlongn。

public static void findSum(int[] a, int sum) {
    Arrays.sort(a);
    int begin = 0;
    int end = a.length - 1;
    while (begin < end) {
        if (a[begin] + a[end] < sum) {//小于sum就begin++ 
            begin++; 
        } else if (a[begin] + a[end] > sum) {//大于sum就end-- 
            end--; 
        } else{//如果等于sum则begin++ end--
            System.out.println(a[begin] + "," + a[end]);
            begin++;
            end--;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/wujingchangye/article/details/88634518