Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหา 2 ตัวเลขในลิสต์ที่ผลรวมเท่ากับ k ใน Python

ให้ลิสต์ nums และเป้าหมาย k ตรวจสอบว่ามี 2 ตัวเลข (ต่างดัชนี) ที่ผลรวม = k หรือไม่ (รองรับเลขลบและ 0)

ตัวอย่าง: nums=[45,18,9,13,12], k=31 → True (18+13)

อัลกอริธึม Hash Set (One Pass)

  • เก็บ k - num ที่คาดหวังใน set
  • ถ้า num ปัจจุบันอยู่ใน set → เจอคู่แล้ว

การนำไปใช้

class Solution:
    def solve(self, nums, k):
        seen = set()
        for num in nums:
            if num in seen:
                return True
            seen.add(k - num)
        return False

ob = Solution()
print(ob.solve([45,18,9,13,12], 31))  # True