Skip to content
Algorithm.js
📚 단일 패턴

3355. Zero Array Transformation I

Difference Array 누적 커버리지를 활용해 O(N)으로 판별하는 방법

Oct 17, 2025 — difference-array

문제 설명

풀이 아이디어

var isZeroArray = function(nums, queries) {
for (const [ left, right ] of queries) {
for (let i = left; i <= right; i += 1) {
if (nums[i] > 0) nums[i] -= 1;
}
}
return nums.every((num) => num === 0);
};

해결 전략

풀이

구현

/**
* @param {number[]} nums
* @param {number[][]} queries
* @return {boolean}
*/
var isZeroArray = function(nums, queries) {
const N = nums.length;
const diff = new Array(N + 1).fill(0);
for (const [ left, right ] of queries) {
diff[left] += 1;
if (right + 1 < N) diff[right + 1] -= 1;
}
let pendingDecrements = 0;
for (let i = 0; i < N; i += 1) {
pendingDecrements += diff[i];
if (pendingDecrements < nums[i]) return false;
}
return true;
};