1671.得到山形数组的最少删除次数
链接:1671.得到山形数组的最少删除次数
难度:Hard
标签:贪心、数组、二分查找、动态规划
简介:给你整数数组 nums ,请你返回将 nums 变成 山形状数组 的 最少 删除次数。
题解 1 - python
- 编辑时间:2023-12-22
- 执行用时:2260ms
- 内存消耗:17.11MB
- 编程语言:python
- 解法介绍:对两边求最长子序列。
def getList(nums: List[int]) -> List[int]:
n = len(nums)
dp = [1] * n
for i in range(n):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return dp
class Solution:
def minimumMountainRemovals(self, nums: List[int]) -> int:
n = len(nums)
prev = getList(nums)
next = getList(nums[::-1])[::-1]
return n - max(prev[i] + next[i] - 1 if prev[i] > 1 and next[i] > 1 else 0 for i in range(n))