Python 中合併區間並按升序排列的程式


假設我們有一個列表間隔,即我們要找到它們的並集,並按排序順序排列。

所以,如果輸入像 inv = [[2, 5],[4, 10],[20, 25]], 那麼輸出將為 [[2, 10], [20, 25]]

為了解決這個問題,我們將遵循以下步驟 -

  • 對間隔列表進行排序
  • ans := 一個新列表
  • 對於間隔列表中的每個開始時間和結束時間 (s, e),執行以下操作
    • 如果 ans 不為空且 s <= ans 的最後一個間隔的結束時間,那麼
      • ans 的最後一個間隔的結束時間 := e 和 ans 的最後一個間隔的結束時間的最大值
    • 其他情況下,
      • 將區間 [s, e] 插入到 ans 中
  • 返回 ans

讓我們看看以下實現以便更好地理解 -

示例

 線上演示

class Solution:
   def solve(self, intervals):
      intervals.sort()
      ans = []
      for s, e in intervals:
         if ans and s <= ans[-1][1]:
            ans[-1][1] = max(ans[-1][1], e)
         else:
            ans.append([s, e])
      return ans
ob = Solution()
inv = [[2, 5],[4, 10],[20, 25]]
print(ob.solve(inv))

輸入

[[2, 5],[4, 10],[20, 25]]

輸出

[[2, 10], [20, 25]]

更新日期:2020 年 11 月 19 日

746 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.