Utknąłem na tym problemie:
Biorąc pod uwagę tablicę z pierwszego liczby naturalne losowo permutowane, tablica jest zbudowany tak, że jest liczbą elementów od do które są mniejsze niż .
i) Biorąc pod uwagę czy możesz znaleźć w czas?
ii) Biorąc pod uwagę czy możesz znaleźć w czas?
Tutaj, . Konkretny przykład:
Czy ktoś może mi pomóc? Dzięki.
algorithms
arrays
permutations
cholernie
źródło
źródło
Odpowiedzi:
Naiwny algorytm ustalaniaB od A :
Ten algorytm się porównujeA(1) dla wszystkich innych (n−1 czasy), A(2) do n−2 inne itp., więc łączna liczba porównań wynosi (n−1)(n−2)2 . Ale to nie najlepsze, co możemy zrobić. Na przykład patrzącB ( n ) , nie musimy dokonywać żadnych porównań! B ( n ) = A ( n ) - 1 ponieważ to pierwszy n liczby naturalne i jest gwarantowane (niezależnie od permutacji), że n - 1 będą tam niższe liczby naturalne. Co powiesz naB ( n - 1 ) ? Zamiast sprawdzaćA ( 1 ) przez A ( n - 2 ) , moglibyśmy po prostu sprawdzić A ( n ) . To jest:
To zajmie2 ×(n2)- 1 ) (n2)- 2 )2)=( n - 2 ) ( n - 4 )4 kroki, które są nadal O (n2)) . Zauważ też, że przy konstruowaniuZA od b , gdyby B ( n ) = A ( n ) - 1 następnie A ( n ) = B ( n ) + 1 .
Ale teraz więcej finezji. Jeśli otrzymamy dodatkowe miejsce lub sortujemy w miejscu, możemy sortować liczby, porównując je. Na przykład:
Zamiast sprawdzać je wszystkie (lub sprawdzać je w kolejności), możemy użyć wyszukiwania binarnego, aby ustalić każde z nichB ( k ) . Jednak sortowanie wciąż wymaga czasuO ( n logn ) .
źródło
Zamiast ustalania każdego z nichB ( k ) pojedynczo, możemy patrzeć w przyszłość i przeglądać tylko każdy numer ZA raz ! Ale użyjemyn przestrzeń:
Możemy zaoszczędzić jeszcze więcej czasu, nie aktualizując tych, które zostały już określone (to znaczy, nie ma sensu aktualizować8 po pierwszym kroku), ale w najgorszym przypadku nadal musimy dokonać aktualizacji ( n ) ( n + 2 )2) czasy
źródło
zarówno I, jak i II można rozwiązać za pomocą #next_greater_element, który tu wyjaśniłem . ale jest to trochę trudniejsze niż sam problem, ale przed rozwiązaniem musisz nauczyć się kolejnego większego elementu:
druga część jest również podobna, zauważając, że możemy uzyskać wartość najbardziej odpowiedniego elementuO ( 1 )
EDYCJA: moje rozwiązanie jest złe, wydaje się, że nie ma żadnegoo ( n ) rozwiązanie
źródło