1. 解题思路
这一题就是一个动态规划的题目。
思路上来说,就是考察每一个没到目标值 k k k的数是否要进行变化,分别考察变化前后对应的后续所需变化数,然后给出最小值即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minIncrementOperations(self, nums: List[int], k: int) -> int:
n = len(nums)
@lru_cache(None)
def dp(idx, last_idx):
if idx >= n:
return 0
if nums[idx] >= k:
return dp(idx+1, idx)
if idx - last_idx == 3:
return k-nums[idx] + dp(idx+1, idx)
else:
return min(k-nums[idx] + dp(idx+1, idx), dp(idx+1, last_idx))
return dp(0, -1)
提交代码评测得到:耗时1460ms,占用内存406.8MB。