Computer >> Máy Tính >  >> Lập trình >> Python

Tìm khoảng giao nhau trong Python

Giả sử chúng ta có một danh sách các khoảng, trong đó mỗi khoảng giống như [bắt đầu, kết thúc] đây là thời gian bắt đầu và kết thúc của một khoảng (bao gồm cả), Chúng ta phải tìm giao điểm của chúng, tức là khoảng thời gian nằm trong tất cả các khoảng đã cho.

Vì vậy, nếu đầu vào là [[10, 110], [20, 60], [25, 75]], thì đầu ra sẽ là [25, 60]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • start, end:=khoảng thời gian sau khi xóa phần tử cuối cùng khỏi danh sách khoảng thời gian
  • trong khi các khoảng không trống, hãy thực hiện
    • start_temp, end_temp:=khoảng thời gian sau khi xóa phần tử cuối cùng khỏi danh sách khoảng thời gian
    • start:=tối đa bắt đầu, start_temp
    • end:=tối thiểu là kết thúc, end_temp
  • trả về một khoảng thời gian [bắt đầu, kết thúc]

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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]