Find the Minimum and Maximum Number of Nodes Between Critical Points LeetCode solution in Python
1# Runtime: 687 ms (Top 71.4%) | Memory: 56.78 MB (Top 82.0%)234class Solution:5def nodesBetweenCriticalPoints(self, head: Optional[ListNode]) -> List[int]:6idx, i = [], 17prev, cur = head, head.next8while cur and cur.next:9if prev.val < cur.val > cur.next.val or prev.val > cur.val < cur.next.val:10idx.append(i)11prev = cur12cur = cur.next13i += 11415if len(idx) < 2:16return [-1, -1]1718minDist = min(j - i for i, j in pairwise(idx))19maxDist = idx[-1] - idx[0]2021return [minDist, maxDist]