Given an array of integers, find the longest subarray where the absolute difference between any two elements is less than or equal to
Example
_a = [1,1,2,2,4,4,5,5,5]_
There are two subarrays meeting the criterion: [1,1,2,2]
and [4,4,5,5,5]
. The maximum length subarray has 5 elements.
Function Description
Complete the pickingNumbers function in the editor below.
pickingNumbers has the following parameter(s):
- int a[n]: an array of integers
Returns
- int: the length of the longest subarray that meets the criterion
Input Format
The first line contains a single integer n, the size of the array a. The second line contains n space-separated integers, each an a[i].
Solution
function pickingNumbers(a) {
// Create an array to store frequency of each element in the input array
let frequency = new Array(100).fill(0);
// Count frequency of each element
for (let i = 0; i < a.length; i++) {
frequency[a[i]]++;
}
// Initialize a variable to store the maximum length of subarray found
let maxLength = 0;
// Traverse through frequency array to find the longest subarray
for (let i = 1; i < frequency.length; i++) {
// The length of a valid subarray is the sum of the frequency of
// the current element and the previous element
maxLength = Math.max(maxLength, frequency[i] + frequency[i - 1]);
}
return maxLength;
}