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

1
class Solution {
2
public int[] nodesBetweenCriticalPoints(ListNode head) {
3
int res[] = new int[] {-1, -1};
4
if (head == null || head.next == null || head.next.next == null) return res;
5
int minidx = Integer.MAX_VALUE, curridx = -1, lastidx = -1;
6
ListNode prev = head, ptr = head.next;
7
int idx = 1, minD = Integer.MAX_VALUE;
8
while (ptr != null && ptr.next != null) {
9
if ((ptr.val > prev.val && ptr.val > ptr.next.val)
10
|| (ptr.val < prev.val && ptr.val < ptr.next.val)) {
11
if (idx < minidx) minidx = idx;
12
lastidx = curridx;
13
curridx = idx;
14
if (lastidx != -1 && curridx - lastidx < minD) minD = curridx - lastidx;
15
}
16
prev = ptr;
17
ptr = ptr.next;
18
idx++;
19
}
20
if (lastidx == -1) return res;
21
else {
22
res[0] = minD;
23
res[1] = curridx - minidx;
24
}
25
return res;
26
}
27
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0