1
var nodesBetweenCriticalPoints = function (head) {2
const MAX = Number.MAX_SAFE_INTEGER;3
const MIN = Number.MIN_SAFE_INTEGER;5
let currNode = head.next;6
let prevVal = head.val;14
for (let i = 1; currNode.next != null; ++i) {15
const currVal = currNode.val;16
const nextNode = currNode.next;17
const nextVal = nextNode.val;19
// Triggers when we have either a maxima or a minima21
(prevVal < currVal && currVal > nextVal) ||22
(prevVal > currVal && currVal < nextVal)24
if (maxIdx != MIN) minDist = Math.min(minDist, i - maxIdx);25
if (minIdx != MAX) maxDist = Math.max(maxDist, i - minIdx);27
if (minIdx == MAX) minIdx = i;35
const minRes = minDist === MAX ? -1 : minDist;36
const maxRes = maxDist === MIN ? -1 : maxDist;38
return [minRes, maxRes];