题目
代码
【方法1:朴素法简单模拟】
执行结果:
通过
执行用时:36 ms, 在所有 Python3 提交中击败了52.23% 的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了53.04% 的用户
通过测试用例:105 / 105
class Solution: def isCovered(self, ranges: List[List[int]], left: int, right: int) -> bool: ans=True while left<=right: flag=False for i in range(len(ranges)): if left>=ranges[i][0] and left<=ranges[i][1]: flag=True break ans=flag if not ans: return ans left+=1 return ans
【方法2:差分数组】
差分数组前缀和不仅能查询是否被覆盖,还能查询某一区间被覆盖几次
执行用时:40 ms, 在所有 Python3 提交中击败了26.32% 的用户
内存消耗:14.9 MB, 在所有 Python3 提交中击败了91.09% 的用户
通过测试用例:105 / 105
class Solution: def isCovered(self, ranges: List[List[int]], left: int, right: int) -> bool: diff = [0] * 52 # 差分数组 for l, r in ranges: diff[l] += 1 diff[r+1] -= 1 print(diff) # 前缀和 curr = 0 for i in range(1, 51): curr += diff[i] if left <= i <= right and curr <= 0: return False return True
【相关问题】
使用差分数组思想解题的题目
**1109、航班预订统计**题解
**1674、使数组互补的最少操作次数**题解
995、K 连续位的最小翻转次数