1. 解题思路
这一题思路上就是一个动态规划的思路,我们不断比较每一个位置上往左以及往下走的耗时,然后取最小值即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minCost(self, m: int, n: int, waitCost: List[List[int]]) -> int:
@lru_cache(None)
def dp(i, j, sec):
if i == m-1 and j == n-1:
return m * n
elif i >= m or j >= n:
return math.inf
if sec == 0:
return waitCost[i][j] + dp(i, j, 1)
else:
return (i+1) * (j+1) + min(dp(i+1, j, 0), dp(i, j+1, 0))
return dp(0, 0, 1)
提交代码评测得到:耗时2321ms,占用内存721.74MB。