สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และค่าเป้าหมายอื่น เราต้องหาผลรวมต่ำสุดของคู่ตัวเลขที่มากกว่าเป้าหมาย
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[2, 4, 6, 10, 14] target =10 ผลลัพธ์จะเป็น 12 ในขณะที่เราเลือก 2 และ 10
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เรียงเลขรายการ
- n :=ขนาดของ nums
- คำตอบ :=10^10
- i :=0, j :=n - 1
- ในขณะที่ฉัน
- ถ้า nums[i] + nums[j]> เป้าหมาย แล้ว
- answer :=ขั้นต่ำของคำตอบ และ (nums[i] + nums[j])
- j :=j - 1
- มิฉะนั้น
- ผม :=ผม + 1
- ถ้า nums[i] + nums[j]> เป้าหมาย แล้ว
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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