Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit LeetCode solution in JavaScript
1/**2* @param {number[]} nums3* @param {number} limit4* @return {number}5*/6var longestSubarray = function (nums, limit) {7const maxQueue = [];8const minQueue = [];9let start = 0;10let res = 0;11for (let end = 0; end < nums.length; end++) {12const num = nums[end];13while (maxQueue.length > 0 && maxQueue[maxQueue.length - 1] < num) {14maxQueue.pop();15}1617while (minQueue.length > 0 && minQueue[minQueue.length - 1] > num) {18minQueue.pop();19}20maxQueue.push(num);21minQueue.push(num);22if (maxQueue[0] - minQueue[0] > limit) {23if (maxQueue[0] === nums[start]) {24maxQueue.shift();25}2627if (minQueue[0] === nums[start]) {28minQueue.shift();29}3031start += 1;32}33res = Math.max(res, end - start + 1);34}3536return res;37};