สมมติว่าเรามีสองลิสต์ L1 และ L2 หาความต่างน้อยที่สุดระหว่างตัวเลขจาก L1 และตัวเลขจาก L2
ตัวอย่าง: L1 = [2, 7, 4], L2 = [16, 10, 11] ผลลัพธ์ 3 (จาก 10 - 7 = 3)
ขั้นตอนการแก้ปัญหา (Two Pointers หลังเรียงลำดับ)
- เรียง
L1และL2 ans = infinity,i = j = 0- วนลูป while
i < len(L1)และj < len(L2):ans = min(ans, abs(L1[i] - L2[j]))- ถ้า
L1[i] < L2[j]:i += 1 - อื่นๆ:
j += 1
- คืนค่า
ans
ตัวอย่างโค้ด Python
class Solution:
def solve(self, L1, L2):
L1.sort()
L2.sort()
ans = float("inf")
i = j = 0
while i < len(L1) and j < len(L2):
ans = min(ans, abs(L1[i] - L2[j]))
if L1[i] < L2[j]:
i += 1
else:
j += 1
return ans
ob = Solution()
L1 = [2, 7, 4]
L2 = [16, 10, 11]
print(ob.solve(L1, L2)) # Output: 3
อินพุต / เอาต์พุต
Input: [2, 7, 4], [16, 10, 11]
Output: 3