Leetcode 3469. Find Minimum Cost to Remove Array Elements
- Leetcode 3469. Find Minimum Cost to Remove Array Elements
- 1. 解题思路
- 2. 代码实现
- 题目链接:3469. Find Minimum Cost to Remove Array Elements
1. 解题思路
这一题我没啥特别好的思路,就只能动态规划了,倒是也能过,不过总是有点勉强……
2. 代码实现
给出python代码实现如下:
class Solution:
def minCost(self, nums: List[int]) -> int:
n = len(nums)
if len(set(nums)) == 1:
return nums[0] * ((n+1) // 2)
@lru_cache(10**4)
def dp(pre, idx):
if idx == n-1:
return max(nums[pre], nums[idx])
elif idx == n-2:
candidates = sorted([nums[pre], nums[idx], nums[idx+1]])
return candidates[0] + candidates[-1]
return min(
max(nums[idx], nums[idx+1]) + dp(pre, idx+2),
max(nums[pre], nums[idx+1]) + dp(idx, idx+2),
max(nums[pre], nums[idx]) + dp(idx+1, idx+2)
)
return dp(0, 1)
提交代码评测得到:耗时6236ms,占用内存344.7MB。