在Python中合并目标区间以查找区间的程序

在Python中合并目标区间以查找区间的程序

假设我们有一个不重叠的区间列表。这些根据结束时间排序。我们有另一个间隔目标,查找合并目标之后的最终间隔,以便间隔仍然是不重叠的并已排序。

因此,如果输入是 intervals = [[1, 15],[25, 35],[75, 90]], target = [10, 30],则输出将为 [[1, 35], [75, 90]],因为前两个间隔 [1, 15] 和[25, 35] 被合并。

要解决这个问题,我们将按照以下步骤进行-

  • 在 iv 的末尾插入目标

  • 基于开始时间对 iv 进行排序

  • 初始化 res 为一个新的列表,包含第一个间隔

  • 将 i 初始化为 1

  • 当 i < iv 的长度时,执行以下操作

    • 如果 iv[i] 的开始时间 <= res 的最后一个间隔的结束时间,则
      • res 的最后一个间隔的结束时间 = res 的最后一个间隔的结束时间和 iv[i] 的结束时间之间的最大值
    • 否则,将 iv[i] 插入到 res 的末尾

    • i = i + 1

  • 返回 res

示例(Python)

让我们看以下实现,以了解更好的理解-

class Solution:
   def solve(self, iv, target):
      iv.append(target)
      iv.sort(key=lambda x: x[0])
      res = [iv[0]]
      i = 1
      while i < len(iv):
         if iv[i][0] <= res[-1][1]:
            res[-1][1] = max(res[-1][1], iv[i][1])
         else:
            res.append(iv[i])
         i += 1
      return res
ob = Solution()
intervals = [
   [1, 15],
   [25, 35],
   [75, 90]
]
target = [10, 30]
print(ob.solve(intervals, target))

输入

[[1, 15],[25, 35],[75, 90]], [10, 30]

输出

[[1, 35], [75, 90]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程