【发布时间】:2020-08-08 06:12:57
【问题描述】:
给定
distance = a[i]*a[i]+b[j]*b[j]
我用:
int[] a = new int[] {3,-1,9};
int[] b = new int[] {100,5,-2};
int res=0;
int sum = 0;
for(int i=0;i<a.length;i++) {
for(int j=0;j<b.length;j++) {
sum = a[i]*a[i]+b[j]*b[j];
if(lower<=sum&& sum<=upper)
res++;
}
}
return res;
上面是我的代码,其复杂度为m*n。是否有任何可能的方法来优化代码,使复杂度可以低于n^2。提前致谢。
【问题讨论】:
-
这可以在
O(n log n)中使用 FFT 来完成,其中 n 是两个数组中较长的数组的长度
标签: arrays optimization time-complexity