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

Tìm giao điểm của các khoảng (Intersecting Intervals) trong Python


Cho danh sách các khoảng, mỗi khoảng dạng [start, end] (bao gồm cả đầu và cuối). Tìm giao điểm của tất cả các khoảng, tức khoảng nằm trong tất cả các khoảng cho trước.

Ví dụ, [[10, 110], [20, 60], [25, 75]], đầu ra [25, 60].

Các bước giải quyết:

  • start, end := khoảng sau khi lấy ra phần tử cuối của intervals.
  • Trong khi intervals không rỗng:
    • start_temp, end_temp := khoảng tiếp theo lấy ra.
    • start = max(start, start_temp).
    • end = min(end, end_temp).
  • Trả về khoảng [start, end].

Ví dụ minh họa

class Solution:
    def solve(self, intervals):
        start, end = intervals.pop()
        while intervals:
            start_temp, end_temp = intervals.pop()
            start = max(start, start_temp)
            end = min(end, end_temp)
        return [start, end]

ob = Solution()
intervals = [[10, 110], [20, 60], [25, 75]]
print(ob.solve(intervals))

Đầu vào

[[10, 110], [20, 60], [25, 75]]

Đầu ra

[25, 60]