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

โปรแกรมนับจำนวนคู่สูงสุดที่มีความแตกต่างมากกว่าเป้าหมายใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และค่าเป้าหมายอื่น เราต้องหาจำนวนคู่สูงสุดโดยที่แต่ละคู่ i =เป้าหมาย

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[2, 4, 6, 10, 11], target =5 ผลลัพธ์จะเป็น 2 ตามที่เราจะได้รับคู่:(2, 6), (5, 10)

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • N :=ขนาด A
  • เรียงลำดับรายการ A
  • ตอบ :=0
  • j :=N / 2
  • สำหรับ i ในช่วง 0 ถึง N / 2 ให้ทำ
    • ในขณะที่ j
    • j :=j + 1
  • ถ้า j
  • อัน :=ans + 1
  • j :=j + 1
  • คืนสินค้า
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    class Solution:
       def solve(self, A, target):
          N = len(A)
          A.sort()
          ans = 0
          j = N >> 1
          for i in range(N >> 1):
             while j < N and A[j] - A[i] < target:
                j += 1
             if j < N:
                ans += 1
                j += 1
          return ans
    ob = Solution()
    nums = [2, 4, 6, 10, 11]
    target = 5
    print(ob.solve(nums, target))

    อินพุต

    [2, 4, 6, 10, 11], 5

    ผลลัพธ์

    2