สมมติว่าเรามีอาร์เรย์ของตัวเลขและมีตัวเลข k อีกตัวหนึ่ง เราต้องตรวจสอบว่าอาร์เรย์ที่กำหนดสามารถแบ่งออกเป็นคู่ได้หรือไม่ เพื่อให้ผลรวมของทุกคู่เป็น k หรือไม่
ดังนั้นหากอินพุตเป็นเหมือน arr =[1, 2, 3, 4, 5, 6], k =7 ผลลัพธ์จะเป็น True เนื่องจากเราสามารถจับคู่ได้เช่น (2, 5), (1, 6) และ (3, 4).
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ arr
- ถ้า n เป็นเลขคี่
- คืนค่าเท็จ
- ต่ำ :=0, สูง :=n - 1
- ในขณะที่ต่ำ <สูง ทำ
- ถ้า arr[ต่ำ] + arr[สูง] ไม่เหมือนกับ k แล้ว
- คืนค่าเท็จ
- ต่ำ :=ต่ำ + 1
- สูง :=สูง - 1
- ถ้า arr[ต่ำ] + arr[สูง] ไม่เหมือนกับ 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