zoukankan      html  css  js  c++  java
  • 1893. 检查是否区域内所有整数都被覆盖 差分数组

    给你一个二维整数数组 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 被第三个区间覆盖。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/check-if-all-the-integers-in-a-range-are-covered
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    差分数组,参考https://leetcode-cn.com/problems/check-if-all-the-integers-in-a-range-are-covered/solution/yi-ti-san-jie-bao-li-you-hua-chai-fen-by-w7xv/

    class Solution {
    public:
        bool isCovered(vector<vector<int>>& ranges, int left, int right) {
            vector<int> diff(55, 0);
            vector<int> sum(55, 0);
    
            for (auto range : ranges) {
                diff[range[0]]++;
                diff[range[1] + 1]--;
            }
    
            for (int i = 1; i <= 50; i++) {
                sum[i] = sum[i - 1] + diff[i];
            }
    
            for (int i = left; i <= right; i++) {
                if (sum[i] <= 0) {
                    return false;
                }
            }
    
            return true;
        }
    };
    
  • 相关阅读:
    openwrt 的依赖找不到问题
    数据包与IPTABLE关系
    wifidog 配置中文说明
    Java 线程
    Java 集合
    IDEA配置Maven并创建web项目
    逻辑覆盖
    获得天气数据
    小程序项目文件介绍
    window 10 使用git
  • 原文地址:https://www.cnblogs.com/xgbt/p/15047378.html
Copyright © 2011-2022 走看看