用 Python 编写程序合并间隔并按升序排序

pythonserver side programmingprogramming

假设我们有一个间隔列表,我们必须按排序顺序找到它们的并集。

因此,如果输入为 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]]

相关文章


有用资源