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

1
class Solution {
2
public:
3
vector<int> nodesBetweenCriticalPoints(ListNode *head) {
4
ListNode *curr = head, *prev = NULL;
5
int minDistance = INT_MAX, maxDistance = -1, size = 0, preCP = 0, first = 0;
6
while (curr) {
7
if (curr->next && prev) {
8
if ((curr->val < prev->val && curr->val < curr->next->val) ||
9
(curr->val > prev->val && curr->val > curr->next->val)) {
10
if (first == 0) {
11
first = size;
12
} else {
13
minDistance = min(minDistance, size - preCP);
14
maxDistance = max(maxDistance, size - first);
15
}
16
preCP = size;
17
}
18
}
19
size++;
20
prev = curr;
21
curr = curr->next;
22
}
23
return {minDistance == INT_MAX ? -1 : minDistance, maxDistance};
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0