文章目录
方法一:动态规划
设置一个结果数组maxvalue_grid
用于保存遍历至对应位置时的最大价值,则可得递推公式为
m
a
x
v
a
l
u
e
_
g
r
i
d
[
i
]
[
j
]
=
max
(
m
a
x
v
a
l
u
e
_
g
r
i
d
[
i
]
[
j
−
1
]
,
m
a
x
v
a
l
u
e
_
g
r
i
d
[
i
−
1
]
[
j
]
)
+
g
r
i
d
[
i
]
[
j
]
maxvalue\_grid[i][j] = \max(maxvalue\_grid[i][j-1], maxvalue\_grid[i-1][j]) + grid[i][j]
maxvalue_grid[i][j]=max(maxvalue_grid[i][j−1],maxvalue_grid[i−1][j])+grid[i][j]
最后返回结果数组的最后一个值即可
class Solution:
def maxValue(self, grid: List[List[int]]) -> int:
m = len(grid)
n = len(grid[0])
maxvalue_grid = [[0 for i in range(n)] for j in range(m)] # 对应位置的结果数组
for i in range(m):
for j in range(n):
try:
maxvalue_grid[i][j] = max(maxvalue_grid[i][j-1], maxvalue_grid[i-1][j]) + grid[i][j]
except IndexError:
maxvalue_grid[i][j] = grid[i][j]
return maxvalue_grid[m-1][n-1]
参考解法的思路一致,但可以直接在grid
上修改以降低空间复杂度