Skip to content

Commit f9283c2

Browse files
authored
Create 2058-find-the-minimum-and-maximum-number-of-nodes-between-critical-points.js
1 parent 81bb83f commit f9283c2

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} head
10+
* @return {number[]}
11+
*/
12+
const nodesBetweenCriticalPoints = function(head) {
13+
const arr = []
14+
let cur = head
15+
while(cur) {
16+
arr.push(cur.val)
17+
cur = cur.next
18+
}
19+
const idxArr = []
20+
const n = arr.length
21+
for(let i = 1; i < n - 1; i++) {
22+
if((arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) || (arr[i] < arr[i - 1] && arr[i] < arr[i + 1])) {
23+
idxArr.push(i)
24+
}
25+
}
26+
27+
let min = Infinity, max = -1
28+
for(let i = 1; i < idxArr.length; i++) {
29+
if(idxArr[i] - idxArr[i - 1] < min) min = idxArr[i] - idxArr[i - 1]
30+
}
31+
if(idxArr.length > 1) max = idxArr[idxArr.length - 1] - idxArr[0]
32+
return [min === Infinity ? -1 : min, max]
33+
};

0 commit comments

Comments
 (0)