สมมติว่าเรามีอาร์เรย์ตัวเลขและมีอีกตัวเลข 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
- ถ้า arr[low] + arr[high] ไม่เท่ากับ k แล้ว
- คืนค่า 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