马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 永恒的蓝色梦想 于 2020-5-13 16:09 编辑
今天的题目:
编写函数,输入一个矩阵(类型为 List[List[int]]),在只允许向右和向下移动的情况下,输出从左上角到右下角的最小路径和。示例:
输入:
[
[131,673,234,103,18],
[201,96,342,965,150],
[630,803,746,422,111],
[537,699,497,121,956],
[805,732,524,37,331]
]
输出:2427
解释:标红路径即为最短路径
 欢迎大家一起答题! 
- class Solution:
- def minPathSum(self, grid):
- m,n=len(grid),len(grid[0])
- for _ in range(1,n):grid[0][_]+=grid[0][_-1] #第一行的路径和
- for _ in range(1,m):grid[_][0]+=grid[_-1][0] #第一列的路径和
- for i in range(1,n):
- for j in range(1,m):
- grid[j][i]+=min(grid[j-1][i],grid[j][i-1]) #然后分别一列一列的求出最短路径和
- return grid[m-1][n-1] #最后一个就是求出的最小路径和
- if __name__ == "__main__":
- obj = Solution()
-
- s=[
- [131,673,234,103,18],
- [201,96,342,965,150],
- [630,803,746,422,111],
- [537,699,497,121,956],
- [805,732,524,37,331]
- ]
- print(obj.minPathSum(s))
复制代码
|