统计数组中不相同的两个数和为零的个数
时间复杂度为线性对数
import java.util.Arrays;
public class TwoSumFast {
public static int count(int[] a){
Arrays.sort(a);
int N = a.length;
int cnt = 0;
for(int i = 0;i<N;i ++)
if(BinarySearch.rank(-a[i],a) > i)
cnt++;
return cnt;
}
}
统计数组中三个不同数字和为零的个数
时间复杂度为N*N*lgN
import java.util.Arrays;
public class TreeSumFast {
public static int count(int[] a){
Arrays.sort(a);
int N = a.length;
int cnt = 0;
for(int i = 0;i<N;i++)
for(int j = i-1;j<N;j++)
if(BinarySearch.rank(-a[i]-a[j],a)>j)
cnt++;
return cnt;
}
}