Zostałem zadany to pytanie w wywiadzie dla Amazonki.Znajdź dwie linie w pliku, które są takie same
Masz plik z wieloma liniami, ale dwie linie są takie same. Znajdź te dwie linie. Podałem oczywistą odpowiedź, która działała w czasie N^2. Następnie wymyśliłem odpowiedź, która posłużyła się tablicą mieszającą, ale nie podobała im się ta odpowiedź, ponieważ powiedzieli, że nie zadziała, jeśli plik znajduje się w gigabajtach. Inną odpowiedzią, jaką wymyśliłem, było zamiast przechowywania wyniku haszowania w pamięci, utworzenie pliku o tej samej nazwie, co wartość skrótu, i zapisanie linii z tą samą wartością skrótu w pliku. Albo nie mogli zrozumieć mojego rozwiązania, albo im się nie podobało.
Jakieś myśli?
Dzięki
Dla Linuksa to proste 'sort | uniq -c | grep '^ 2' ' –
OK, pozwól mi spojrzeć na inne rozwiązania, ale czy to nie wsysa pliku do pamięci? –
@JohnSmith: GNU 'sort' wie, jak zrobić sortowanie zewnętrzne, gdy dane nie mieszczą się w pamięci (http://vkundeti.blogspot.co.uk/2008/03/tech-algorithmic-details-of-unix -sort.html). –