欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

【数组-简单】1893.检查是否区域内所有整数都被覆盖

时间:2023-04-28

题目
代码
【方法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 连续位的最小翻转次数

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。