Minimalna niepowtarzalny numer w tablicy jest zdefiniowana jako min{v|v occurs only once in the array}
Na przykład, minimalna niepowtarzalnym numerem {1, 4, 1, 2, 3} jest 2. jest jakiś lepiej niż sortowanie?znalezienie minimalnej niepowtarzalny numer w tablicy
Odpowiedz
Wierzę, że to jest O (N) rozwiązanie zarówno w czasie i przestrzeni:
HashSet seenOnce; // sufficiently large that access is O(1)
HashSet seenMultiple; // sufficiently large that access is O(1)
for each in input // O(N)
if item in seenMultiple
next
if item in seenOnce
remove item from seenOnce
add to item seenMultiple
else
add to item seeOnce
smallest = SENTINEL
for each in seenOnce // worst case, O(N)
if item < smallest
smallest = item
Jeśli masz ograniczony zakres wartości integralnych można wymienić HashSets z BitArrays zaindeksowane przez wartości.
To wszystko świetnie, proszę pana, ale gdzie mogę znaleźć tę magiczną funkcję skrótu dostępu losowego O (1), o której mówisz? O ile ja (i reszta świata) wiem, że "najlepszym" czasem dostępu losowego dla funkcji mieszania jest O (logn). – ElKamina
O ile czegoś nie brakuje, nie jest wymagany dostęp losowy. Pierwszy przebieg przechodzi przez 'input' (O (N)) i wykonuje wyszukiwanie, wstawienia i usunięcia na zestawach skrótów, każdy O (1). Razem: O (N). Drugie przejście, jak napisane obecnie pętle nad 'seenOnce', ale to łatwo naprawić: po prostu zapętlić ponownie' input' (O (N)), przetestować członkostwo w 'seenOnce' (O (1)), a jeśli jest tam dopisać do nowej 'seenOnceList' (O (1)), całkowitej O (N). Na koniec wykonaj skanowanie dla minimum, O (N). Net O (N), nie? – DSM
@ElKamina - Mylicie drzewo z hash. Zobacz http://en.wikipedia.org/wiki/Big_O_notation#Orders_of_common_functions i spójrz na listę pod O (1). Przy dużym stole i odpowiedniej funkcji skrótu kolizje są nieznaczne. – walrii
Nie musisz wykonywać pełnego sortowania. Wykonuj wewnętrzną pętlę sortowania bąbelkowego, aż uzyskasz wyraźną minimalną wartość na jednym końcu. W najlepszym wypadku będzie to mieć złożoność czasową O (k * n), gdzie k = liczba nierozróżnialnych wartości minimalnych. Jednak najgorszym przypadku złożoność jest O (n * n). Tak więc może to być efektywne, gdy oczekiwana wartość k < < n.
Myślę, że byłaby to minimalna możliwa złożoność czasu, chyba że można dostosować dowolne algorytmy sortowania O (n * logn) do powyższego zadania.
- 1. znalezienie minimalnej odległości w tabeli
- 2. Sprawdzanie minimalnej różnicy między elementami w tablicy
- 3. iOS - Znalezienie złożonego obiektu w tablicy
- 4. Znalezienie lokalne maksima w tablicy 2D
- 5. Znalezienie string-klucz w JavaScript tablicy
- 6. Znalezienie klucza minimalną wartość w tablicy asocjacyjnej
- 7. Numpy znalezienie indeks elementu w innej tablicy
- 8. Znalezienie kolejnych zer w numpy tablicy
- 9. Znalezienie Jeśli numer docelowy jest sumą dwóch liczb w tablicy poprzez LINQ
- 10. Niepowtarzalny błąd podczas @runInSeparateProcess
- 11. Niepowtarzalny ogranicznik OpenERP
- 12. Niepowtarzalny komunikat kolejki Azure
- 13. Najszybszy sposób na znalezienie 2 brakujących numerów w tablicy
- 14. Potrzebuję wartości N minimalnej (indeksowej) w tablicy numpy
- 15. znajdowanie maksymalnej i minimalnej liczby z 2 liczb w tablicy
- 16. Jak znaleźć najwyższy numer w tablicy?
- 17. Znalezienie bloki w macierzach
- 18. Znalezienie Zasięg w coffeescript
- 19. Znalezienie elementy tablicy położenie w kolumnie ramki pandy (aka pd.series)
- 20. Skuteczny sposób na znalezienie średniej różnicy między elementami w tablicy
- 21. Znalezienie ilość wierszy i kolumn tablicy 2-D w C++
- 22. Utwórz niepowtarzalny identyfikator urządzeń z systemem iOS?
- 23. Najlepszy sposób na znalezienie pojedynczej liczby w parach lub trójek
- 24. Subarray minimalnej sumy w O (N) według algorytmu Kadane'a
- 25. Jak przechowywać numer podzielny w nowej tablicy z javascript
- 26. Ustawianie minimalnej i maksymalnej daty w kalendarzu?
- 27. Próba ustawienia minimalnej wysokości słupków w HighStock
- 28. has_secure_password: jak wymagać minimalnej długości
- 29. Wymagaj minimalnej wersji pakietu R
- 30. Algorytm znajdowania "minimalnej ścieżki oparcia"?
"Lepsze", co oznacza "mniejszą złożoność czasu"? –
@VaughnCato: tak, zastanawiam się, czy możemy zrobić lepiej niż O (nlogn). – shilk
Czy zakres Twoich wartości jest ograniczony lub ograniczony? Jeśli są one integralne z ograniczonym zakresem, uważam, że O (N) jest możliwy. – walrii