-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathminimum-size-subarray-sum.js
More file actions
26 lines (26 loc) · 1.16 KB
/
minimum-size-subarray-sum.js
File metadata and controls
26 lines (26 loc) · 1.16 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
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function (target, nums) {
let leftPointer = 0;
let res = Infinity;
let currSum = 0;
for (let rightPointer = 0; rightPointer < nums.length; rightPointer++) {
// 1. Outer loop (for):
// • Traverse the array using rightPointer, the right pointer of the window.
// • Add the current element nums[rightPointer] to currSum.
// 2. Inner loop (while):
// • When currSum is greater than or equal to target, the current subarray [leftPointer, rightPointer] is valid.
// • Update res with the smaller value between its current value and the current window size (rightPointer + 1 - leftPointer).
// • Shrink the window from the left (leftPointer++) by subtracting nums[leftPointer] from currSum.
// • Continue shrinking the window as long as currSum is still >= target, looking for even smaller subarrays.
currSum += nums[rightPointer];
while (currSum >= target) {
res = Math.min(res, rightPointer + 1 - leftPointer);
currSum -= nums[leftPointer++];
}
}
return res === Infinity ? 0 : res;
};