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 }
  • 相关阅读:
    Android权限 uses-permission
    Android中的颜色设置
    px 与 dp, sp换算公式?
    如何成为一名黑客?(转)
    uva 1291(dp)
    框架模式 MVC 在Android中的使用
    CCA概述和安装
    机房收费系统合作版(三)——UI思索
    (36)JS运动之使物体向右运动
    二叉查找树的非递归操作
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/3958961.html
Copyright © 2011-2022 走看看