1893. 检查是否区域内所有整数都被覆盖 - 力扣(LeetCode)


要判断 [left, right] 区间内的每个整数是否都被 ranges 中的至少一个区间覆盖,我们可以采取以下思路:
✅ 解题思路:
-
创建一个布尔数组
covered,长度为right - left + 1,初始值为False,表示[left, right]中的每个数字是否被覆盖。 -
遍历每个
range [start, end]:-
把
[start, end]和[left, right]的交集部分打上标记(标记为True)。
-
-
最后检查
covered数组是否全为True。
✅ Python 示例代码如下:
def isCovered(ranges, left, right):
covered = [False] * (right - left + 1)
for start, end in ranges:
for i in range(max(start, left), min(end, right) + 1):
covered[i - left] = True
return all(covered)
✅ 示例:
ranges = [[1, 2], [3, 4], [5, 6]]
left = 2
right = 5
print(isCovered(ranges, left, right)) # 输出: True
这个例子中,2-5 都被不同的区间覆盖,所以返回 True。
如果你想要优化效率,我们也可以用差分数组 + 前缀和来做,适合处理更大范围的数据。
813

被折叠的 条评论
为什么被折叠?



