第57天(中等题 数据结构)
打卡第五十七天
2道中等题

题目:

思路:用差分数组计算每个位置被查询覆盖的次数,然后比较每个位置被操作的次数是否足够将该位置的数字减到 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;
}
};
耗时≈一小时 明天继续

浙公网安备 33010602011771号