使用O(n * log(n))时间复杂度的给定和算法对位置

时间:2019-10-25 14:03:08

标签: java arrays algorithm time-complexity complexity-theory

我被要求以二次,nlogn和线性复杂度实现该算法。

我已经实现了二次和线性实现,但是找不到nlogn的解决方案。

  

给定一个有序数组(v)和一个整数(k),程序应该输出索引的有序对,这样i小于j并且v [i] + v [j] == k;如果该对不存在,则输出应为“(-1,-1)”。

private static String linearSumPositionPair(int[] v , int k){
        int i=0;
        int j=v.length-1;
        String r="(-1, -1)";
        while(v[i]<v[j]){
            if(v[i]+v[j]==k){
                r="("+i+", "+j+")";
                break;
            }else if(v[i]+v[j]<k){
                i++;
            }else{
                j--;
            }
        }
        return r;
    }

0 个答案:

没有答案