Gegeben n
, die Anzahl der Begriffe im Array und k
, eine positive Zahl und ein Array arr[]
, wird erwartet, dass die Anzahl der Paare in der Anordnung, so dass ihre Differenz ist mindestens k
.
EX:
INPUTAnzahl der Paare von Zahlen mit einer Differenz von mindestens K
7 2
2 4 3 5 6 1 7
OUTPUT
15
So war mein Ansatz:
int main()
{
long long int n,k;
scanf("%lld %lld",&n,&k);
long long int a=0,arr[n];
while(a<n)
{
scanf("%lld",&arr[a]);
a++;
}
quicksort(arr,0,n-1);//sorting the array
long long int i=n-1,j=0,ans=0;//two-pointer method
while(i>0)
{
if(arr[i] - arr[j] >= k && j < i)
{
ans ++;
j++;
}
else
{
i--;
j = 0;
}
}
printf("%lld",ans);
return 0;
}
Aber die Lösung übersteigt für größere Testfälle Frist. Irgendwelche Verbesserungen möglich?
Die Worst-Case-Zeitkomplexität von Quicksort kann O (n^2) sein. Versuchen Sie es mit einem besseren Sortieralgorithmus. – marvel308
Es gibt 5 Paare. Warum 15? – progyammer
(2,4), (2,5), (2,6), (2,7) usw. –