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