Leetcode 875 Solution

This article provides solution to leetcode question 875 (longest-mountain-in-array)

https://leetcode.com/problems/longest-mountain-in-array

Solution

class Solution:
    def longestMountain(self, A: List[int]) -> int:
        if len(A) < 3:
            return 0

        dp1 = [0] * len(A)
        for i in range(len(A)):
            if i == 0:
                dp1[0] = 1
            else:
                dp1[i] = 1 + (dp1[i - 1] if A[i] > A[i - 1] else 0)

        dp2 = [0] * len(A)
        for i in reversed(range(len(A))):
            if i == len(A) - 1:
                dp2[i] = 1
            else:
                dp2[i] = 1 + (dp2[i + 1] if A[i] > A[i + 1] else 0)

        ans = 0
        for v1, v2 in zip(dp1, dp2):
            if v1 > 1 and v2 > 1:
                ans = max(ans, v1 + v2 - 1)
        return ans