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

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

สมมติว่ามีรายการตัวเลข nums และค่า target ต้องการหาผลรวมของคู่ตัวเลขที่น้อยที่สุดแต่มากกว่า target

ตัวอย่าง: nums = [2, 4, 6, 10, 14], target = 10 ผลลัพธ์คือ 12 เลือก 2 และ 10

ขั้นตอนการแก้ปัญหา

  1. เรียง nums
  2. n = len(nums), answer = 10**10
  3. i = 0, j = n-1
  4. วนลูป بينما i < j:
    • ถ้า nums[i] + nums[j] > target:
      • answer = min(answer, nums[i] + nums[j])
      • j -= 1
    • มิฉะนั้น: i += 1
  5. คืน answer

ตัวอย่างโค้ด

class Solution:
    def solve(self, nums, target):
        nums.sort()
        n = len(nums)
        answer = 10 ** 10
        i, j = 0, n - 1
        while i < j:
            if nums[i] + nums[j] > target:
                answer = min(answer, nums[i] + nums[j])
                j -= 1
            else:
                i += 1
        return answer

ob = Solution()
nums = [2, 4, 6, 10, 14]
target = 10
print(ob.solve(nums, target))

อินพุต

[2, 4, 6, 10, 14], 10

เอาต์พุต

12