hash map (dictionary) ให้ O(1) โดยเฉลี่ย สำหรับการค้นหา การแทรก และการลบ การแลกเปลี่ยนหน่วยความจำ O(n) เพื่อให้ได้ความเร็วจะเปลี่ยนอัลกอริทึม O(n²) จำนวนมากเป็น O(n) โดยการแทนที่การสแกนซ้ำด้วยการค้นหาแบบต่อไป
ความคิดพื้นฐาน
แทนที่จะค้นหารายการทุกครั้ง ให้เก็บค่าที่เคยเห็นไว้ใน hash map และตรวจสอบสมาชิกในเวลาคงที่
ตัวอย่าง: two-sum ใน O(n)
():
seen = {}
i, x (nums):
need = target - x
need seen:
(seen[need], i)
seen[x] = i
two_sum([, , , ], )
