Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm hiệu nhỏ nhất giữa hai phần tử từ hai danh sách bằng Python


Cho hai danh sách L1 và L2, tìm hiệu nhỏ nhất (giá trị tuyệt đối) giữa một số từ L1 và một số từ L2.

Ví dụ: L1 = [2, 7, 4], L2 = [16, 10, 11] → 3 (10 - 7 = 3).

Quy trình giải quyết (Two Pointers)

  1. Sắp xếp cả hai danh sách.
  2. Khởi tạo ans = infinity, i = j = 0.
  3. Trong khi i < len(L1) và j < len(L2):
    • Cập nhật ans = min(ans, abs(L1[i] - L2[j])).
    • Nếu L1[i] < L2[j], tăng i, ngược lại tăng j.
  4. Trả về ans.

Ví dụ mã nguồn

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

Đầu vào

[2, 7, 4], [16, 10, 11]

Đầu ra

3