Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @param {number} limit
4
* @return {number}
5
*/
6
var longestSubarray = function (nums, limit) {
7
const maxQueue = [];
8
const minQueue = [];
9
let start = 0;
10
let res = 0;
11
for (let end = 0; end < nums.length; end++) {
12
const num = nums[end];
13
while (maxQueue.length > 0 && maxQueue[maxQueue.length - 1] < num) {
14
maxQueue.pop();
15
}
16

17
while (minQueue.length > 0 && minQueue[minQueue.length - 1] > num) {
18
minQueue.pop();
19
}
20
maxQueue.push(num);
21
minQueue.push(num);
22
if (maxQueue[0] - minQueue[0] > limit) {
23
if (maxQueue[0] === nums[start]) {
24
maxQueue.shift();
25
}
26

27
if (minQueue[0] === nums[start]) {
28
minQueue.shift();
29
}
30

31
start += 1;
32
}
33
res = Math.max(res, end - start + 1);
34
}
35

36
return res;
37
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0