题目:​​原题链接​(困难)

标签:动态规划

解法

时间复杂度

空间复杂度

执行用时

Ans 1 (Python)

O ( N × M )

O ( N × M )

64ms (20.53%)

Ans 2 (Python)

Ans 3 (Python)

解法一:

class Solution:
_BIG = 2 ** 31

def calculateMinimumHP(self, dungeon: List[List[int]]) -> int:
m, n = len(dungeon), len(dungeon[0])

# 初始化状态矩阵
dp = [[self._BIG] * (n + 1) for _ in range(m + 1)]
dp[m][n - 1] = dp[m - 1][n] = 1 # 右下角位置的右侧和下方

for i in range(m - 1, -1, -1):
for j in range(n - 1, -1, -1):
res = min(dp[i + 1][j], dp[i][j + 1]) - dungeon[i][j]
dp[i][j] = max(res, 1)

return dp[0][0]