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

หาสามตัวเลขจากสามอาร์เรย์ต่างกันที่ผลรวมเท่ากับค่าที่กำหนดใน Python

ตรวจสอบว่ามี Triplet จาก 3 อาร์เรย์ที่ผลรวมเท่า Sum หรือไม่

กำหนดอาร์เรย์ 3 ตัว A, B, C และค่า sum ต้องการทราบว่ามี triplet (a, b, c) ที่ a ∈ A, b ∈ B, c ∈ C และ a + b + c = sum หรือไม่

ตัวอย่าง: A=[2,3,4,5,6], B=[3,4,7,2,3], C=[4,3,5,6,7], sum=12 → True (4+2+6=12)

วิธีแก้ง่ายที่สุด (Brute Force O(N³))

ใช้ลูปซ้อน 3 ชั้น ตรวจสอบทุกการจับคู่

โค้ดตัวอย่าง Python

def is_sum_from_three_arr(A, B, C, target_sum):
    for a in A:
        for b in B:
            for c in C:
                if a + b + c == target_sum:
                    return True
    return False

A = [2,3,4,5,6]
B = [3,4,7,2,3]
C = [4,3,5,6,7]
print(is_sum_from_three_arr(A, B, C, 12))  # True

หมายเหตุ

วิธีนี้ใช้เวลา O(N³) เหมาะสำหรับอาร์เรย์ขนาดเล็ก สำหรับขนาดใหญ่ควรใช้ Hash Set หรือ Two-pointer หลังเรียงลำดับเพื่อลดเป็น O(N²)