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

ตรวจสอบว่าอาร์เรย์ที่เรียงแล้วสามารถแบ่งเป็นคู่ที่ผลรวมเป็น k ได้หรือไม่ใน Python


สมมติว่าเรามีอาร์เรย์ตัวเลขและมีอีกตัวเลข k เราต้องตรวจสอบว่าอาร์เรย์ที่กำหนดสามารถแบ่งเป็นคู่ได้โดยที่ผลรวมของทุกคู่เป็น k หรือไม่

เช่น ถ้าอินพุตเป็น arr = [1, 2, 3, 4, 5, 6], k = 7 ผลลัพธ์จะเป็น True เนื่องจากเราสามารถจับคู่ได้เป็น (2, 5), (1, 6) และ (3, 4)

ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

  • n := ขนาดของ arr
  • ถ้า n เป็นเลขคี่ แล้ว
    • คืนค่า False
  • low := 0, high := n - 1
  • while low < high ทำ
    • ถ้า arr[low] + arr[high] ไม่เท่ากับ k แล้ว
      • คืนค่า False
    • low := low + 1
    • high := high - 1
  • คืนค่า True

ลองดูการนำไปใช้ดังต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:

ตัวอย่าง

def solve(arr, k):
    n = len(arr)
    if n % 2 == 1:
        return False
    low = 0
    high = n - 1
    while low < high:
        if arr[low] + arr[high] != k:
            return False
        low = low + 1
        high = high - 1
    return True

arr = [1, 2, 3, 4, 5, 6]
k = 7
print(solve(arr, k))

อินพุต

[1, 2, 3, 4, 5, 6], 7

ผลลัพธ์

True