zoukankan      html  css  js  c++  java
  • [leetcode DP]64. Minimum Path Sum

    一个m*n的表格,每个格子有一个非负数,求从左上到右下最短的路径值

    和62,63两个值是同一个思路,建立dp表,记录每个位置到右下角的最短路径的值

     1 class Solution(object):
     2     def minPathSum(self, grid):
     3         m,n = len(grid),len(grid[0])
     4         flag = [[0 for i in range(n)] for j in range(m)]
     5         flag[m-1][n-1] = grid[m-1][n-1]
     6         for i in range(m-1,-1,-1):
     7             for j in range(n-1,-1,-1):
     8                 if i==m-1:
     9                     if j!=n-1:
    10                         flag[i][j] = grid[i][j] + flag[i][j+1]
    11                 elif j==n-1:
    12                     if i!=m-1:
    13                         flag[i][j] = grid[i][j] + flag[i+1][j]
    14                 else:
    15                     flag[i][j] = min(flag[i+1][j],flag[i][j+1])+grid[i][j]
    16         return flag[0][0]

     占用线性空间的解法:

     1 class Solution(object):
     2     def minPathSum(self, grid):
     3         m,n = len(grid),len(grid[0])
     4         flag = [0]+[sys.maxint]*(n-1)
     5         for i in range(m):
     6             flag[0] += grid[i][0]
     7             for j in range(1,n):
     8                 flag[j] = min(flag[j],flag[j-1]) +  grid[i][j]
     9         return flag[-1]
    10         
  • 相关阅读:
    vue组件的通信
    vue基础
    vue项目总结
    路由(4)传参
    路由(3)
    第一次作业
    JAVA-2.0-homework
    JAVA-2.0-上机
    JAVA-1.9-homework
    JAVA-1.9-上机
  • 原文地址:https://www.cnblogs.com/fcyworld/p/6539741.html
Copyright © 2011-2022 走看看