Dostałem listę liczb całkowitych n, a te liczby całkowite są w zakresie od 1 do n. Nie ma żadnych duplikatów na liście.Ale jedna z liczb całkowitych nie ma na liście.Musię znaleźć brakującą liczbę całkowitą.Znaleźć brakującą liczbę w sekwencji
Example: If n=8
I/P [7,2,6,5,3,1,8]
O/P 4
I am using a simple concept to find the missing number which is to get the
sum of numbers
total = n*(n+1)/2
And then Subtract all the numbers from sum.
Jednak powyższa metoda zakończy się niepowodzeniem, jeśli suma liczb przekroczy maksymalną dozwoloną liczbę całkowitą.
Więc szukał drugiego rozwiązania i znalazłem sposób jak następuje:
1) XOR all the elements present in arr[], let the result of XOR be R1.
2) XOR all numbers from 1 to n, let XOR be R2.
3) XOR of R1 and R2 gives the missing number.
Jak działa ta metoda .. Jak jest XOR R1 i R2 wyszukuje brakujące całkowitą w powyższym przypadku ?
Co powiesz na brutalne wymuszenie tego? Posortuj tablicę, sprawdź kilka indeksów, dla których '[n - (n-1)]' nie jest równy 1. – Renan
Dlaczego jest maksymalna dozwolona liczba całkowita? – VoronoiPotato
@VoronoiPotato: A co jeśli w sekwencji jest 1 miliard cyfr, a on jest ograniczony do 32-bitowych liczb całkowitych? –