zoukankan      html  css  js  c++  java
  • Leetcode: Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
    
    Note: You can only move either down or right at any point in time.

    Unique Path问题相似,是一个DP问题,解决问题的方案依然是建造一个新矩阵,每个元素值是从top left到该点的最短距离。递归式可以根据这个写出来,并且一旦计算出了到该点的最短距离,就把它存起来以备其他点使用。

    递推式是res[i][j]=min(res[i-1][j], res[i][j-1])+grid[i][j]。总共进行两层循环,时间复杂度是O(m*n)。空间复杂度本来应该是O(M*N)的一个矩阵,但是我们实际需要的其实只有上一行的信息,这样可以省去一维,只需要O(m)就够了

    注意12行是从左到右

     1 public int minPathSum(int[][] grid) {
     2     if(grid == null || grid.length==0 || grid[0].length==0)
     3         return 0;
     4     int[] res = new int[grid[0].length];
     5     res[0] = grid[0][0];
     6     for(int i=1;i<grid[0].length;i++)
     7     {
     8         res[i] = res[i-1]+grid[0][i];
     9     }
    10     for(int i=1;i<grid.length;i++)
    11     {
    12         for(int j=0;j<grid[0].length;j++)
    13         {
    14             if(j==0)
    15                 res[j] += grid[i][j];
    16             else
    17                 res[j] = Math.min(res[j-1], res[j])+grid[i][j];
    18         }
    19     }
    20     return res[grid[0].length-1];
    21 }
  • 相关阅读:
    企业付款到零钱,现金红包
    Ubuntu 添加,删除ppa
    Ubuntu16.04下的主题美化
    Mysql 统计查询
    crontab修改默认编辑器
    highcharts PHP中使用
    解决ubuntu开机进入grub界面的问题
    商城功能,助力商家
    PHP获取固定概率
    PHP概率,抽奖
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/3958961.html
Copyright © 2011-2022 走看看