这是我看到的地方,并与此想出了一个面试问题:什么是最有效的方法来查找给定排序数组中的任何两个数字是否合计到数组中的第三个数字?
import java.util.Random;
import java.util.Arrays;
class SumTwo
{
public static void main(String arg[])
{
Random r=new Random();
int arr[]=new int[5];
for(int i=0;i<arr.length;i++)
{
arr[i]=r.nextInt(20);
}
Arrays.sort(arr);
printArr(arr);
System.out.println(checkSum(arr));
}
public static boolean checkSum(int[] arr)
{
for(int i=2;i<arr.length;i++)
{
if(check(arr,0,i-1,arr[i]))
return true;
}
return false;
}
public static boolean check(int[] arr, int st, int en, int sum)
{
int add=0;
while(st<en)
{
add=arr[st]+arr[en];
if(add==sum)
return true;
else if(add>sum)
en--;
else
st++;
}
return false;
}
public static void printArr(int[] arr)
{
System.out.println("\n");
for(int i=0;i<arr.length;i++)
System.out.print(" "+arr[i]);
System.out.println("\n");
}
}
@NPE如果我能做得比这更好 –
看起来不错,但没有尝试,但看起来是正确的,你正在利用排序的数组,并且你正在寻找其他两个值的总和 – fersarr