-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path3356. Zero Array Transformation II.java
More file actions
33 lines (32 loc) · 1.08 KB
/
3356. Zero Array Transformation II.java
File metadata and controls
33 lines (32 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
//donot edit this code
public int minZeroArray(int[] nums, int[][] queries) {
int n = nums.length;
//length of number
//length of minzeroarray
if (Arrays.stream(nums).allMatch(x -> x == 0)) return 0;
int left = 1, right = queries.length;
if (!canMakeZeroArray(right, nums, queries)) return -1;
while (left < right) {
int mid = left + (right - left) / 2;
if (canMakeZeroArray(mid, nums, queries)) right = mid;
else left = mid + 1;
}
return left;
}
private boolean canMakeZeroArray(int k, int[] nums, int[][] queries) {
int n = nums.length;
int[] diff = new int[n + 1];
for (int i = 0; i < k; i++) {
int left = queries[i][0], right = queries[i][1], val = queries[i][2];
diff[left] += val;
diff[right + 1] -= val;
}
int currVal = 0;
for (int i = 0; i < n; i++) {
currVal += diff[i];
if (currVal < nums[i]) return false;
}
return true;
}
}