这是我在某处看到的一个面试问题并提出了这个问题:
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");
}
}