我读了 Find two elements in an array that sum to k和How can I find two elements in an array that sum to k as they are related。
我知道一个 O(n) 解决方案,但我看到一个 O(n logn) 也存在:-
p=0,q=n-1;
while(p<q)
{
if(a[p]+a[q]==k)
{
cout<<a[p]<<"\t"<<a[q];
p++;
q--;
}
else if(a[p]+a[q]>k)
q--;
else
p++;
}
这需要首先对数组进行排序。但是由于 p 和 q 的值取决于数组中的元素,我们如何断言这个算法的复杂度是 O(n Log n)?