Ένας χάρτης κατακερματισμού (λεξικό) παρέχει O(1) κατά μέσο όρο αναζητήσεις, εισαγωγές και διαγραφές. Αντικαθιστώντας τις επαναλαμβανόμενες αναζητήσεις με άμεσες αναζητήσεις, μετατρέπονται πολλοί O(n²) αλγόριθμοι σε O(n) με κόστος O(n) μνήμης.
Η ιδέα
Αντί να αναζητάς μια λίστα κάθε φορά, αποθήκευσε τις τιμές που έχεις δει σε έναν χάρτη κατακερματισμού και ελέγξε την ιδιότητα μέλους σε σταθερό χρόνο.
Παράδειγμα: two-sum σε O(n)
():
seen = {}
i, x (nums):
need = target - x
need seen:
(seen[need], i)
seen[x] = i
two_sum([, , , ], )
