第57天(中等题 数据结构)

打卡第五十七天
2道中等题
image

题目:
image

思路:用差分数组计算每个位置被查询覆盖的次数,然后比较每个位置被操作的次数是否足够将该位置的数字减到 0。

代码:

class Solution {
public:
    bool isZeroArray(vector<int>& nums, vector<vector<int>>& queries) {
        int n = nums.size();
        vector<int> diff(n + 1, 0);  // 创建差分数组,大小为 n+1,初始化为全0
        for (auto& q : queries) { 
            int l = q[0];  // 左端点
            int r = q[1];  // 右端点
            diff[l]++;     // 起点:覆盖次数+1
            diff[r + 1]--; // 终点的下一个位置:覆盖次数-1
        }
        int sum_d = 0;  // 当前位置被所有查询覆盖的总次数
        for (int i = 0; i < n; i++) {
            sum_d += diff[i];  
            if (nums[i] > sum_d) { 
                return false;  // 无法清零,直接返回false
            }
        }
        return true;
    }
};

耗时≈一小时 明天继续

posted @ 2025-12-16 23:28  Wy0518  阅读(3)  评论(0)    收藏  举报