สมมติว่ามีรายการตัวเลข nums และค่า target ต้องการหาผลรวมของคู่ตัวเลขที่น้อยที่สุดแต่มากกว่า target
ตัวอย่าง: nums = [2, 4, 6, 10, 14], target = 10 ผลลัพธ์คือ 12 เลือก 2 และ 10
ขั้นตอนการแก้ปัญหา
- เรียง
nums n = len(nums), answer = 10**10i = 0, j = n-1- วนลูป بينما
i < j:- ถ้า
nums[i] + nums[j] > target:answer = min(answer, nums[i] + nums[j])j -= 1
- มิฉะนั้น:
i += 1
- ถ้า
- คืน
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