Một hash map (từ điển) cho phép tra cứu, chèn và xóa với độ phức tạp trung bình O(1). Đổi O(n) bộ nhớ lấy tốc độ, nó biến nhiều thuật toán O(n²) thành O(n) bằng cách thay các lần quét lặp lại bằng các lần tra cứu tức thì.
Ý tưởng
Thay vì tìm kiếm một danh sách mỗi lần, hãy lưu các giá trị đã gặp vào một hash map và kiểm tra sự hiện diện trong thời gian hằng số.
Ví dụ: two-sum trong O(n)
():
seen = {}
i, x (nums):
need = target - x
need seen:
(seen[need], i)
seen[x] = i
two_sum([, , , ], )
