跳到主要内容

1893.检查是否区域内所有整数都被覆盖

链接:1893.检查是否区域内所有整数都被覆盖
难度:Easy
标签:数组、哈希表、前缀和
简介:给你一个二维整数数组  ranges  和两个整数  left  和  right 。每个  ranges[i] = [starti, endi]  表示一个从  starti  到  endi  的   闭区间  。如果闭区间  [left, right]  内每个整数都被  ranges  中   至少一个   区间覆盖,那么请你返回  true ,否则返回  false 。

题解 1 - typescript

  • 编辑时间:2021-07-23
  • 执行用时:100ms
  • 内存消耗:40.8MB
  • 编程语言:typescript
  • 解法介绍:合并相近区间。
function isCovered(ranges: number[][], left: number, right: number): boolean {
ranges.sort(([l1, r1], [l2, r2]) => (l1 === l2 ? r1 - r2 : l1 - l2));
const rangeList: number[][] = [];
for (const range of ranges) {
if (rangeList.length === 0) {
rangeList.push(range);
continue;
}
const [l1, r1] = rangeList.pop()!;
const [l2, r2] = range;
if (l2 >= l1 && r2 <= r1) rangeList.push([l1, r1]);
else if (r1 < l2 - 1) rangeList.push([l1, r1], [l2, r2]);
else rangeList.push([l1, r2]);
}
for (const [l, r] of rangeList) {
if (left >= l && right <= r) return true;
}
return false;
}