我有一个包含
示例:
N
个整数的数组,其中N<= 10^6
。对于每个索引 i ,我需要找到最近的左邻居j,使得A[j]%A[i]==0 0<j<i
。示例:
3 4 2 6 7 3
Nearest Neighbor array
-1 -1 1 -1 -1 3
As for last element i.e 3 6%3==0 and index of 6 is 3 so ans is 3
similar for 2 nearest neighbor is 4
暴力破解方法
int[] Neg = new int[n];
Arrays.fill(Neg,-1);
for(int i=1;i<n;i++)
for(int j=i-1;j>=0;j--)
if(A[j]%A[i]==0){
Neg[i]=j;
break;
}
这种 O(n^2) 的方法很容易失败
,我该如何提出更好的方法,比如O(nlogn)的算法?
-2^31.. 2^31 - 1
。 - AiveanN <= 10^6
。但是A[i]
呢?它是否真的满足1 <= A[i] <= 10^6
?如果是这样,将这个信息添加到问题中会更有帮助。 - user3386109