[置顶] LeetCode--Minimum Path Sum (最小路径和)Python
2017-11-17 11:19
375 查看
题目:
给定一个m*n的数组,数组中包含非负数,从该数组左上角到该数组右下角的最小路径和。(只能向下或者向右移动)。数组格式如下:
[[1,3,1],
[1,5,1],
[4,2,1]]
解题思路:
考虑使用递归或者动态规划来解题:
楼主刚开始用递归实现了一遍,发现超时了,改为动态规划后AC。故只解释动归代码:从左上角开始对数组进行遍历,将grid(数组)内容存储为走到当前位置的最短路径和。故只考虑当前位置的左边和上边哪个小,就选择哪个路径即可。
动态规划代码(Python):
递归代码(Python):
给定一个m*n的数组,数组中包含非负数,从该数组左上角到该数组右下角的最小路径和。(只能向下或者向右移动)。数组格式如下:
[[1,3,1],
[1,5,1],
[4,2,1]]
解题思路:
考虑使用递归或者动态规划来解题:
楼主刚开始用递归实现了一遍,发现超时了,改为动态规划后AC。故只解释动归代码:从左上角开始对数组进行遍历,将grid(数组)内容存储为走到当前位置的最短路径和。故只考虑当前位置的左边和上边哪个小,就选择哪个路径即可。
动态规划代码(Python):
class Solution(object): def minPathSum(self, grid): """ :type grid: List[List[int]] :rtype: int """ m = len(grid) n = len(grid[0]) for i in range(m): for j in range(n): if i==0 and j==0: continue if i==0 and j!=0: grid[i][j]=grid[i][j-1]+grid[i][j] continue if i!=0 and j==0: grid[i][j]=grid[i-1][j]+grid[i][j] continue if i!=0 and j!=0: grid[i][j]=min(grid[i-1][j],grid[i][j-1])+grid[i][j] continue return grid[m-1][n-1]
递归代码(Python):
class Solution(object): def minPathSum(self, grid): """ :type grid: List[List[int]] :rtype: int """ final = [] m = len(grid)-1 n = len(grid[0])-1 print m print n def Iteration(i,j,sum_0): if i<m and j<n: Iteration(i+1,j,sum_0+grid[i+1][j]) Iteration(i,j+1,sum_0+grid[i][j+1]) if i==m and j==n: final.append(sum_0) if i==m and j<n: Iteration(i,j+1,sum_0+grid[i][j+1]) if i<m and j==n: Iteration(i+1,j,sum_0+grid[i+1][j]) Iteration(0,0,grid[0][0]) return min(final)
相关文章推荐
- leetcode64-Minimum Path Sum(最小路径和)
- [Leetcode] minimum path sum 最小路径和
- Leetcode:Minimum Path Sum 最小路径和
- [leetcode 64] Minimum Path Sum------从左上角到右下角的最小路径值
- Leetcode-64_. Minimum Path Sum(最小路径和)—动态规划解法+记忆化搜索解法-C++解
- [Leetcode-64]Minimum Path Sum 二维数组路径最小和
- [LeetCode] Minimum Path Sum 最小路径和
- [leetcode]Minimum Path Sum 最小路径和
- 【LeetCode-面试算法经典-Java实现】【064-Minimum Path Sum(最小路径和)】
- LeetCode | Minimum Path Sum(最小路径和)
- LeetCode—Minimum Path Sum 二维数组最小路径,动态规划
- 【LeetCode-面试算法经典-Java实现】【064-Minimum Path Sum(最小路径和)】
- LeetCode(Minimum Path Sum) 找到路径中和最小的
- Minimum Path Sum'二维数组最小路径和
- Minimum Path Sum最小路径和算法详解
- 【LeetCode】【Python】Minimum Path Sum
- [leetcode]Minimum Path Sum @ Python
- LeetCode:Minimum Path Sum(网格最大路径和)
- leetcode:Minimum Path Sum(路线上元素和的最小值)【面试算法题】
- LeetCode OJ 之 Minimum Path Sum (最小路径和)