Find the Minimum and Maximum Number of Nodes Between Critical Points LeetCode solution in JavaScript

1
var nodesBetweenCriticalPoints = function (head) {
2
const MAX = Number.MAX_SAFE_INTEGER;
3
const MIN = Number.MIN_SAFE_INTEGER;
4

5
let currNode = head.next;
6
let prevVal = head.val;
7

8
let minIdx = MAX;
9
let maxIdx = MIN;
10

11
let minDist = MAX;
12
let maxDist = MIN;
13

14
for (let i = 1; currNode.next != null; ++i) {
15
const currVal = currNode.val;
16
const nextNode = currNode.next;
17
const nextVal = nextNode.val;
18

19
// Triggers when we have either a maxima or a minima
20
if (
21
(prevVal < currVal && currVal > nextVal) ||
22
(prevVal > currVal && currVal < nextVal)
23
) {
24
if (maxIdx != MIN) minDist = Math.min(minDist, i - maxIdx);
25
if (minIdx != MAX) maxDist = Math.max(maxDist, i - minIdx);
26

27
if (minIdx == MAX) minIdx = i;
28
maxIdx = i;
29
}
30

31
prevVal = currVal;
32
currNode = nextNode;
33
}
34

35
const minRes = minDist === MAX ? -1 : minDist;
36
const maxRes = maxDist === MIN ? -1 : maxDist;
37

38
return [minRes, maxRes];
39
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0