Skip to main content

2444.js

/** ------------------------------------------------------------------------------
*
* 2444. Count Subarrays With Fixed Bounds
* Topics: Sliding Window
* https://leetcode.com/problems/count-subarrays-with-fixed-bounds/?envType=daily-question&envId=2025-04-26
*
------------------------------------------------------------------------------ */
/**
* @param {number[]} nums
* @param {number} minK
* @param {number} maxK
* @return {number}
*/
var countSubarrays = function (nums, minK, maxK) {
let answer = 0
let lastMin = -1,
lastMax = -1,
leftBound = -1

for (let i = 0; i < nums.length; i++) {
const num = nums[i]

if (num < minK || num > maxK) {
leftBound = i
}

if (num === minK) lastMin = i
if (num === maxK) lastMax = i

answer += Math.max(0, Math.min(lastMin, lastMax) - leftBound)
}

return answer
}

console.log(countSubarrays([1, 3, 5, 2, 7, 5], 1, 5))