题目说明:
请设计一个高效算法,找出数组中两数之和为指定值的所有整数对。
给定一个int数组A和数组大小n以及需查找的和sum,请返回和为sum的整数对的个数。保证数组大小小于等于3000。
测试样例:
[1,2,3,4,5],5,6
返回:2
Java代码:
import java.util.Arrays;
public class Two
{
public static int expectSum_bySort(int[] arr, int n, int expectSum)
{
if(arr == null || n == 0)
return -1;
int count=0;
Arrays.sort(arr);
int left = 0, right = n - 1;
while(left < right)
{
if(arr[left] + arr[right] > expectSum)
right--;
else if(arr[left] + arr[right] < expectSum)
left++;
else//equal
{
count++;
left++;
right--;
}
}
return count;
}
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int n=arr.length;
int expectSum = 6;
System.out.println(expectSum_bySort(arr, n, expectSum));
}
}
运行结果: