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 เป็นเลขคี่
    • คืนค่าเท็จ
  • ต่ำ :=0, สูง :=n - 1
  • ในขณะที่ต่ำ <สูง ทำ
    • ถ้า arr[ต่ำ] + arr[สูง] ไม่เหมือนกับ k แล้ว
      • คืนค่าเท็จ
    • ต่ำ :=ต่ำ + 1
    • สูง :=สูง - 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