สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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
- ถ้า nums[p1] + nums[p2] <เป้าหมาย แล้ว
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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