20150708 lintcode 总结 Minimum Path Sum

原创 2015年07月08日 15:09:06

Easy Minimum Path Sum

34%
Accepted

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. You can only move either down or right at any point in time.

虽然是简单的题,感觉也不简单

Time complexity: O(m*n); Space complexity: O(m*n)

public class Solution {
    /**
     * @param grid: a list of lists of integers.
     * @return: An integer, minimizes the sum of all numbers along its path
     */
    public int minPathSum(int[][] grid) {
        // write your code here
        if (grid == null || grid.length == 0 || grid[0].length == 0) {
            return 0;
        }
        int m = grid.length;
        int n = grid[0].length;
        int[][] temp = new int[m][n];
        
        for(int i = 0; i<m ; i++){      	
        	for(int j = 0; j<n; j++){
        		if(i==0 && j==0){
        			temp[0][0] = grid[0][0];
        		}else if(i==0){
            		temp[0][j] = temp[0][j-1] + grid[i][j];
            	}else if(j==0){
            		temp[i][0] = temp[i-1][0] + grid[i][j];
            	}else{
            	    temp[i][j] = Math.min(temp[i-1][j], temp[i][j-1]) + grid[i][j];
            	}      		
    	   }
       }
        
<span style="white-space:pre">	</span>return temp[m-1][n-1];
    }
}

方法2:time complexity: O(m*n); space complexity: O(n)

public class Solution {
    /**
     * @param grid: a list of lists of integers.
     * @return: An integer, minimizes the sum of all numbers along its path
     */
    public int minPathSum(int[][] grid) {
        // write your code here
    	if (grid == null || grid.length == 0 || grid[0].length == 0) {
            return 0;
        }
    	int m = grid.length;
        int n = grid[0].length;
        int[] temp = new int[n];
        
        for(int i = 0; i<m; i++){     
        	for(int j = 0; j<n; j++){
        		if(i == 0 && j == 0 ){
        			temp[0] = grid[0][0];
        		}else if(i == 0 ){
        			temp[j] = temp[j-1] + grid[0][j];
        		}else if(j == 0 ){
        			temp[0] = temp[0] + grid[i][0];
        		}else{
        			temp[j] = Math.min(temp[j], temp[j-1]) + grid[i][j];
        		}	
        	}       		
       }      
        return temp[n-1];
    }
}


leetcode 64. Minimum Path Sum-最小路径和|动态规划

原题链接:64. Minimum Path Sum 【思路】 采用动态规划。动态规划要求利用到上一次的结果,是一种特殊的迭代思想,动态规划的关键是要得到递推关系式。对于本题,从原点到达(i, j)的最...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年05月31日 20:11
  • 1872

Minimum Path Sum -- LeetCode

原题链接: http://oj.leetcode.com/problems/minimum-path-sum/  这道题跟Unique Paths,Unique Paths II是相同类型的...
  • linhuanmars
  • linhuanmars
  • 2014年03月27日 07:04
  • 8680

【LeetCode-面试算法经典-Java实现】【064-Minimum Path Sum(最小路径和)】

【064-Minimum Path Sum(最小路径和)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a m x n grid filled with no...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月02日 06:05
  • 2388

LeetCode || Minimum Path Sum

Minimum Path Sum  Total Accepted: 19916 Total Submissions: 63796My Submissions Question  Solution ...
  • jiadebin890724
  • jiadebin890724
  • 2014年10月19日 11:40
  • 4291

[LeetCode]64.Minimum Path Sum

【题目】 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom r...
  • SunnyYoona
  • SunnyYoona
  • 2015年02月04日 15:55
  • 1711

leetCode 64.Minimum Path Sum (最短路) 解题思路和方法

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which...
  • xygy8860
  • xygy8860
  • 2015年07月17日 16:25
  • 928

LeetCode 64 — Minimum Path Sum(C++ Java Python)

题目:http://oj.leetcode.com/problems/minimum-path-sum/ Given a m x n grid filled with non-negative num...
  • dragon_dream
  • dragon_dream
  • 2014年02月26日 22:09
  • 2469

[Lintcode]Minimum Path Sum

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right whi...
  • jc69186918
  • jc69186918
  • 2016年02月22日 23:58
  • 160

64 Minimum Path Sum

题目链接:https://leetcode.com/problems/minimum-path-sum/题目:Given a m x n grid filled with non-negative n...
  • ChilseaSai
  • ChilseaSai
  • 2015年08月14日 15:42
  • 427

leetcode第一刷_Minimum Path Sum

可以用递归简洁的写出,但是会超时。 dp嘛。这个问题需要从后往前算,最右下角的小规模是已知的,边界也很明显,是最后一行和最后一列,行走方向的限制决定了这些位置的走法是唯一的,可以先算出来。然后不断的...
  • u012792219
  • u012792219
  • 2014年05月12日 12:31
  • 1338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:20150708 lintcode 总结 Minimum Path Sum
举报原因:
原因补充:

(最多只允许输入30个字)