3355. Zero Array Transformation I
Description
You are given an integer array nums
of length n
and a 2D array queries
, where queries[i] = [li, ri]
.
For each queries[i]
:
- Select a subset of indices within the range
[li, ri]
innums
. - Decrement the values at the selected indices by 1.
A Zero Array is an array where all elements are equal to 0.
Return true
if it is possible to transform nums
into a Zero Array after processing all the queries sequentially, otherwise return false
.
Example 1:
Input: nums = [1,0,1], queries = [[0,2]]
Output: true
Explanation:
- For i = 0:
- Select the subset of indices as
[0, 2]
and decrement the values at these indices by 1. - The array will become
[0, 0, 0]
, which is a Zero Array.
- Select the subset of indices as
Example 2:
Input: nums = [4,3,2,1], queries = [[1,3],[0,2]]
Output: false
Explanation:
- For i = 0:
- Select the subset of indices as
[1, 2, 3]
and decrement the values at these indices by 1. - The array will become
[4, 2, 1, 0]
.
- Select the subset of indices as
- For i = 1:
- Select the subset of indices as
[0, 1, 2]
and decrement the values at these indices by 1. - The array will become
[3, 1, 0, 0]
, which is not a Zero Array.
- Select the subset of indices as
Constraints:
1 <= nums.length <= 105
0 <= nums[i] <= 105
1 <= queries.length <= 105
queries[i].length == 2
0 <= li <= ri < nums.length
Solutions
Solution 1: Difference Array
We can use a difference array to solve this problem.
Define an array \(d\) of length \(n + 1\), with all initial values set to \(0\). For each query \([l, r]\), we add \(1\) to \(d[l]\) and subtract \(1\) from \(d[r + 1]\).
Then we traverse the array \(d\) within the range \([0, n - 1]\), accumulating the prefix sum \(s\). If \(\textit{nums}[i] > s\), it means \(\textit{nums}\) cannot be converted to a zero array, so we return \(\textit{false}\).
After traversing, return \(\textit{true}\).
The time complexity is \(O(n + m)\), and the space complexity is \(O(n)\). Here, \(n\) and \(m\) are the lengths of the array \(\textit{nums}\) and the number of queries, respectively.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|