Degree of an Array LeetCode solution in JavaScript

1
/**
2
* 1. compute all positions for each number
3
* 2. filter arrays of max length
4
* 3. select minimum difference between its first and last elems
5
*/
6
var findShortestSubArray = function (nums) {
7
const numPositions = {};
8
for (let i = 0; i < nums.length; i++) {
9
const num = nums[i];
10
if (numPositions[num] == null) numPositions[num] = [];
11
numPositions[num].push(i);
12
}
13

14
let maxLen = 0;
15
// will store the positions of most frequent numbers
16
let maxPos = [];
17
for (const positions of Object.values(numPositions)) {
18
const curLen = positions.length;
19
if (curLen === maxLen) {
20
maxPos.push(positions);
21
} else if (curLen > maxLen) {
22
maxLen = curLen;
23
maxPos = [positions];
24
}
25
}
26

27
let minDist = Number.MAX_SAFE_INTEGER;
28
for (const positions of maxPos) {
29
minDist = Math.min(
30
minDist,
31
positions[positions.length - 1] - positions[0] + 1
32
);
33
}
34
return minDist;
35
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0