[LeetCode][Java] Minimum Path Sum

來源:互聯網
上載者:User

標籤:leetcode   java   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.

題意:

給定一個填充了非負數的 m x n 的格子,從格子的左上方到右下角尋找一個路徑,使得路徑上的數字和最小。

注意:每次你只能在格子中向下或者向右移動一次。


演算法分析:

方法一:

      採用遞迴策略,從右下角終點開始向前遞迴,也是利用了問題的最優解包含子問題的最優解這一思想,層層遞迴,直到起點

      但是這題逾時了。

方法二:
     動態規劃

     思路跟《Unique Paths》還是類似的

定義dp[i][j]:表示從左上點到[i,j]點所有路徑中的最小和由於只能向下和向右移動,所以[i,j]的最小路徑只依賴於[i-1,j]和[i,j-1]兩個位置  

即 dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i][j]但是第一行和第一列要特殊處理。


AC代碼:

方法一:(逾時了)

public int minPathSum(int[][] grid)     {        int res=0;        int legh=grid.length;        int legl=grid[0].length;        if(legh==0) return 0;        if(legh==1&&legl==1) return grid[0][0];        res=MinRecursive(legh-1,legl-1,grid);    return res;    }    private static int  MinRecursive(int i,int j,int[][] grid)    {    if( i==0 && j==0)    return grid[0][0];    if(i==-1||j==-1) return Integer.MAX_VALUE;    return Math.min(MinRecursive(i-1, j,grid),MinRecursive(i,j-1,grid))+grid[i][j];   }


方法二:

<span style="font-family:Microsoft YaHei;">public int minPathSum(int[][] grid)     {          if(grid.length==0)              return 0;          int res[][] = new int[grid.length][grid[0].length];        res=grid;        int i, j;          for( j=1; j<res[0].length; ++j)              res[0][j] += res[0][j-1];          for(i=1; i<res.length; ++i)              res[i][0] += res[i-1][0];          for(i=1; i<res.length; ++i)        {              for(j=1; j<res[i].length; ++j)            {                  res[i][j] = Math.min(res[i-1][j], res[i][j-1])+grid[i][j];              }          }          return res[grid.length-1][grid[0].length-1];    //注意行列的size不一定一樣      }</span>


著作權聲明:本文為博主原創文章,轉載註明出處

[LeetCode][Java] Minimum Path Sum

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.