用 Python 编写程序来查找与切区间不相交的区间
pythonserver side programmingprogramming
假设我们有一个排序且不相交的区间列表和另一个表示区间的切区间列表。我们必须删除与切割间隔相交的所有间隔部分,并返回新列表。
因此,如果输入类似于间隔 = [[2, 11],[13, 31],[41, 61]] cut = [8, 46],则输出将是 [[2, 8], [46, 61]]
为了解决这个问题,我们将遵循以下步骤 −
- cut_start, cut_end := cut
- ans := a new list
- 对于间隔中的每个开始、结束,执行
- 如果 cut_start 和 start 的最大值 < end 和 cut_end 的最小值,则
- 如果 start < cut_start,然后
- 将区间 [start, cut_start] 插入 ans
- 如果 end > cut_end,则
- 将区间 [cut_end, end] 插入 ans
- 如果 start < cut_start,然后
- 否则,
- 如果 cut_start 和 start 的最大值 < end 和 cut_end 的最小值,则
- 返回 ans
让我们看看下面的实现以便更好地理解 −
示例
class Solution: def solve(self, intervals, cut): cut_start, cut_end = cut ans = [] for start, end in intervals: if max(cut_start, start) < min(end, cut_end): if start < cut_start: ans.append([start, cut_start]) if end > cut_end: ans.append([cut_end, end]) else: ans.append([start, end]) return ans ob = Solution() intervals = [[2, 11],[13, 31],[41, 61]] cut = [8, 46] print(ob.solve(intervals, cut))
输入
[[2, 11],[13, 31],[41, 61]], [8, 46]
输出
[[2, 8], [46, 61]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

