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

โปรแกรมหาผลรวมของตัวเลขสองตัวที่น้อยกว่าเป้าหมายใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และยังมีค่าเป้าหมายด้วย เราต้องหาผลรวมของคู่ตัวเลขที่ใหญ่ที่สุดใน num ที่มีผลรวมสูงสุด (target-1)

ดังนั้น หากอินพุตเท่ากับ nums =[8, 3, 4, 9, 2] target =8 ผลลัพธ์จะเป็น 7 เนื่องจากผลรวมของคู่ตัวเลขที่ใหญ่ที่สุดที่น้อยกว่า 8 คือ 4 + 3 =7

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

  • เรียงเลขรายการ
  • p1 :=0
  • p2 :=ขนาดของ nums - 1
  • ม :=-inf
  • ในขณะที่ p1
  • ถ้า nums[p1] + nums[p2] <เป้าหมาย แล้ว
    • m :=สูงสุดของ m และ (nums[p1] + nums[p2])
    • p1 :=p1 + 1
  • มิฉะนั้น
    • p2 :=p2 - 1
  • คืนสินค้า
  • ตัวอย่าง

    ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    import math
    def solve(nums, target):
       nums.sort()
       p1 = 0
       p2 = len(nums) - 1
       m = -math.inf
       while p1 < p2:
          if nums[p1] + nums[p2] < target:
             m = max(m, nums[p1] + nums[p2])
             p1 += 1
          else:
             p2 -= 1
       return m
    
    nums = [8, 3, 4, 9, 2]
    target = 8
    print(solve(nums, target))

    อินพุต

    [8, 3, 4, 9, 2], 8

    ผลลัพธ์

    7