Longest Mountain in Array LeetCode solution in Python
1class Solution:2def longestMountain(self, arr: List[int]) -> int:3if len(arr) < 3:4return 056max_up, max_down = [1 for _ in arr], [1 for _ in arr]78for i, x in enumerate(arr):9if i == 0:10continue11if x > arr[i - 1]:12max_up[i] = max_up[i - 1] + 11314for j, y in reversed(list(enumerate(arr))):15if j == len(arr) - 1:16continue17if y > arr[j + 1]:18max_down[j] = max_down[j + 1] + 11920return max(21x + y - 1 if x > 1 and y > 1 else 0 for x, y in zip(max_up, max_down)22)