假设有一个乱序的长度至少大于2的整数数组A,请你找出两数之和等于T的所有配对,并返回配对的数目。
要求你认为算法复杂度最低的方法!!!求大神指导!!!分享各自认为最好的方法
import java.util.*;
class Pairs
{
int i=0,j=0;
public int findPairs(int[] a,int sum,int T){
Arrays.sort(a); //为数组排序
while (i<a.length-1-j)
{
int x=a.length-1-j; //数组自右逐一向前指定数组元素的标识
int s=a[i]+a[x]; //排序后数组由前向指定数组元素与后向指定元素之和
if (s>T) //若和大于指定元素,修改数组后向元素标识
{
j++;
}else if(s<T){ //若和小于指定元素,修改数组前向元素标识
i++;
}else{ //若s=T,则输出此数对,以及统计个数
sum++;
System.out.print("[" + a[i] + "," + a[x] + "]" + " ");
i++;
j++;
}
}
return sum;
}
}
public class FindPairsDemo
{
public static void main(String args[])
{
Pairs p=new Pairs();
int arr[]={49,51,23,77,90,10,18,82};
int num=0;
int T=10;
System.out.println("\n符合条件的数据有" + p.findPairs(arr,num,T) + "对!");
}
}