Minimum Number of Removals to Make Mountain Array LeetCode solution in Python
1class Solution:2def minimumMountainRemovals(self, nums: List[int]) -> int:3n = len(nums)4inc = [0] * n5dec = [0] * n67# Longest Increasing Subsequence8for i in range(1, n):9for j in range(0, i):10if nums[i] > nums[j]:11inc[i] = max(inc[i], inc[j] + 1)1213# Longest Decreasing Subsequence14for i in range(n - 2, -1, -1):15for j in range(n - 1, i, -1):16if nums[i] > nums[j]:17dec[i] = max(dec[i], dec[j] + 1)1819# Final calculation20res = 021for i in range(0, n):22if inc[i] > 0 and dec[i] > 0:23res = max(res, inc[i] + dec[i])2425# Final conclusion26return n - res - 1