我被要求以二次,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;
}