1893. 检查是否区域内所有整数都被覆盖
思路:使用差分数组前缀和解决一维数组区间覆盖问题
public boolean isCovered(int[][] ranges, int left, int right) {
// 差分数组
int[] differentialArray = new int[60];
for (int[] range : ranges) {
differentialArray[range[0]]++;
differentialArray[range[1] + 1]--;
}
// 前缀和
// 只需要检查在指定的范围呢前缀和是否为0数,则可以得知是否存在未覆盖的区间
int prefixAnd = 0;
for (int i = 1; i <= 50; ++i) {
prefixAnd += differentialArray[i];
if (i >= left && i <= right && prefixAnd == 0) {
return false;
}
}
return true;
}