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

โปรแกรมหาความต่างน้อยที่สุดระหว่างสองสมาชิกจากสองลิสต์ใน Python

สมมติว่าเรามีสองลิสต์ L1 และ L2 หาความต่างน้อยที่สุดระหว่างตัวเลขจาก L1 และตัวเลขจาก L2

ตัวอย่าง: L1 = [2, 7, 4], L2 = [16, 10, 11] ผลลัพธ์ 3 (จาก 10 - 7 = 3)

ขั้นตอนการแก้ปัญหา (Two Pointers หลังเรียงลำดับ)

  1. เรียง L1 และ L2
  2. ans = infinity, i = j = 0
  3. วนลูป while i < len(L1) และ j < len(L2):
    • ans = min(ans, abs(L1[i] - L2[j]))
    • ถ้า L1[i] < L2[j]: i += 1
    • อื่นๆ: j += 1
  4. คืนค่า 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