【发布时间】:2017-06-30 06:14:27
【问题描述】:
给定一个 N 个整数的排序数组,我需要找到所有具有不同索引的对(i!=j)。我需要最大的(a[j]+a[i]-1) 和最小的(a[j]-a[i]+1) 与(j>i)。数字不是唯一的,但它们的配对是允许的。数字不能自己配对。
我现在在做什么:
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
MAX= max(MAX,a[j] + a[i] -1);
MIN=min(MIN,a[j]-a[i]+1);
}
}
这给出了 O(n^2) 的时间复杂度。有没有办法将它减少到 O(nlogn) 甚至更少?
【问题讨论】:
标签: c++ sorting search binary-search