3355 - Zero Array Transformation I
info
- 문제 보기: 3355 - Zero Array Transformation I
- 소요 시간: 18분 42초
- 풀이 언어:
java
- 체감 난이도: 3️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
누적합
풀이 코드
info
- 메모리: 95560 KB
- 시간: 3 ms
class Solution {
public boolean isZeroArray(int[] nums, int[][] queries) {
int[] diff = new int[nums.length+2];
for (int[] q : queries) {
++diff[q[0]];
--diff[q[1]+1];
}
if (diff[0] < nums[0]) return false;
for (int i = 1; i < nums.length; ++i) {
diff[i] = diff[i] + diff[i-1];
if (diff[i] < nums[i]) return false;
}
return true;
}
}
풀이 해설
대충 생각하면 문제 그대로 query 구간을 1씩 감산해서 판단하는 방식이 있다.
하지만 범위를 따졌을 때 이어서 해당 시간복잡도는 TLE이므로
prefix sum을 이용하여 효율적으로 처리해주어야 한다.