2444. Count Subarrays With Fixed Bounds
Description
You are given an integer array nums
and two integers minK
and maxK
.
A fixed-bound subarray of nums
is a subarray that satisfies the following conditions:
- The minimum value in the subarray is equal to
minK
. - The maximum value in the subarray is equal to
maxK
.
Return the number of fixed-bound subarrays.
A subarray is a contiguous part of an array.
Example 1:
Input: nums = [1,3,5,2,7,5], minK = 1, maxK = 5 Output: 2 Explanation: The fixed-bound subarrays are [1,3,5] and [1,3,5,2].
Example 2:
Input: nums = [1,1,1,1], minK = 1, maxK = 1 Output: 10 Explanation: Every subarray of nums is a fixed-bound subarray. There are 10 possible subarrays.
Constraints:
2 <= nums.length <= 105
1 <= nums[i], minK, maxK <= 106
Solutions
Solution 1: Enumerate the Right Endpoint
According to the problem description, we know that all elements of a bounded subarray are within the range \([\textit{minK}, \textit{maxK}]\), and the minimum value must be \(\textit{minK}\), while the maximum value must be \(\textit{maxK}\).
We iterate through the array \(\textit{nums}\) and count the number of bounded subarrays with \(\textit{nums}[i]\) as the right endpoint. Then, we sum up all the counts.
The specific implementation logic is as follows:
- Maintain the index \(k\) of the most recent element that is not within the range \([\textit{minK}, \textit{maxK}]\), initialized to \(-1\). The left endpoint of the current element \(\textit{nums}[i]\) must be greater than \(k\).
- Maintain the most recent index \(j_1\) where the value is \(\textit{minK}\) and the most recent index \(j_2\) where the value is \(\textit{maxK}\), both initialized to \(-1\). The left endpoint of the current element \(\textit{nums}[i]\) must be less than or equal to \(\min(j_1, j_2)\).
- Based on the above, the number of bounded subarrays with the current element as the right endpoint is \(\max\bigl(0,\ \min(j_1, j_2) - k\bigr)\). Accumulate all these counts to get the result.
The time complexity is \(O(n)\), where \(n\) is the length of the array \(\textit{nums}\). The space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
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 17 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
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 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|