To jest pytanie do wywiadu.Znajdź liczbę par o tej samej różnicy w posortowanej tablicy
"Biorąc pod uwagę posortowaną tablicę Znajdź liczbę par z tą samą różnicą."
na przykład: jeśli tablica to {1, 2, 3, 5, 7, 7, 8, 9};
wtedy mamy
5 par z różnicą 1
6 par różnicą 2
4 par różnicą 4
2 parami różnicy 3
4 pary z różnicą 6
3 par różnicą 5
dwóch parach z różnicy 7
1 pary z różnicy 8
1 pary z różnicy 0
że próbował następujące:
maxdiff=arr[n-1]-arr[0]; //calculating the maximum difference
int b[maxdiff];
for(i=0;i<maxdiff;i++)
{
for(j=0;j<n;j++)
{
p=arr[j]+i;
x=binarysearch(p,arr); //search p in array,where x return 0/1
if(x==1)
b[i]++;
}
}
to jest rozwiązanie O (k * n * logn), gdzie k jest maksymalną różnicą między pierwszym i ostatnim elementem posortowanej tablicy, n jest rozmiarem tablicy.
Czy ktoś ma lepszy pomysł niż ten?
Powinieneś również uwzględnić "różnicę 0" i "różnicę 8". – Sebastian
Możesz użyć HashMap zamiast tablicy, następnie wyszukiwanie binarne można zastąpić przez normalne wyszukiwanie w HashMap, które jest O (1) – Reddy
@Sebastian: gotowe – x0v