网站建设绿茶科技,广东网站建设人员,温州人才网招聘网官网,手机上开发游戏theme: healer-readable
给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。
如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖#xff0c;那么请你返回 true #xff…
theme: healer-readable
给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。
如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖那么请你返回 true 否则返回 false 。
已知区间 ranges[i] [starti, endi] 如果整数 x 满足 starti x endi 那么我们称整数x 被覆盖了。 示例 1
输入ranges [[1,2],[3,4],[5,6]], left 2, right 5 输出true 解释2 到 5 的每个整数都被覆盖了
2 被第一个区间覆盖。3 和 4 被第二个区间覆盖。5 被第三个区间覆盖。 示例 2
输入ranges [[1,10],[10,20]], left 21, right 21 输出false 解释21 没有被任何一个区间覆盖。
解题思路
维护一个数组dif记录每个区间的起点和终点dif[i]nn为正数代表有n个区间以i为起点负数则是终点维护一个变量cur当cur遍历到i时curdif[i]代表cur进入了被n个区间覆盖的区域如果处于[left,right]之间的节点没被覆盖即cur0返回false
代码
class Solution {public boolean isCovered(int[][] ranges, int left, int right) {int[] dif new int[52];for (int[] range : ranges) {dif[range[0]];dif[range[1]1]--;}int cur0;for (int i0;i51;i){curdif[i];if(irightileftcur0)return false;}return true;}
}