关闭

LeetCode Minimum Path Sum

标签: leetcode
183人阅读 评论(0) 收藏 举报
分类:

题目:

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行n列的二维数组,这二维数组中的值都是非负,找一条从左上角开始到右下角的所有格子和最小的路径。注意:你每次都只能要么向右走要么向下走一步。

题解:

这道题目是很典型的二维的动态规划的题目,看到此题,就应该想到动态规划。LZ此前在一篇博客中看到类似的题型,不过那个是计算最大值,也差不多,换汤不换药的东西。首先就是要找状态,我们注意到一点,到达一个格子的方式最多两种,从左边来(除了第一列)和从上边来(除了第一行),因此为了求出到达当前格子后最少能收集到的和,我们就要去考察那些能够达到当前这个格子的格子,所以状态转移方程也自然有了:

s[i][j] = a[i][j] + min(s[i-1][j],if i > 0;s[i][j-1],if j > 0) ,但是这里要注意的是针对s[0][0]的那一个格子,因为是从一行和一列开始的,所以当遇到s[0][0]的时候,我是直接将其赋为nums[0][0]的那个值,另外当遇到的是第一行和第一列的时候,因为没有s[i-1][j]和s[i][j-1],所以我在设置这些格子的时候采用Integer.MAX_VALUE,这个最大值来做,这样就可以比较最小的那个了。

public class NumArray 
{
	public static int minPathSum(int[][] nums)
	{
		int n = nums.length;
		int m = nums[0].length;
		//System.out.println(m);
		int[][] S = new int[n][m];
		for(int i = 0; i < n; i++)
		{
			for(int j = 0; j < m; j++)
			{
				int increment = nums[i][j];
				//System.out.print(increment + "  ");
				int left = 0,up = 0;
				if(i == 0 && j == 0)
					S[i][j] =increment;
				else
				{
					if(i > 0)
						up = S[i-1][j];
					else 
						up = Integer.MAX_VALUE;
					if(j > 0)
						left = S[i][j - 1];
					else 
						left = Integer.MAX_VALUE;
					int neighbor = 0;
					if(up <= left)
					   neighbor = up;
					else 
					   neighbor = left;
					S[i][j] = neighbor + increment;
				}
			}
		}
		int result = S[n-1][m-1];
		return result;
	}
	public static void main(String[] args)
	{
		int[][] nums = new int[][]{{1,2},{1,1}};
		System.out.println(minPathSum(nums));
	}
}



0
0
查看评论

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 minimizes the sum of all numbers along its path. ...
  • xygy8860
  • xygy8860
  • 2015-07-17 16:25
  • 928

Minimum Path Sum -- LeetCode

原题链接: http://oj.leetcode.com/problems/minimum-path-sum/  这道题跟Unique Paths,Unique Paths II是相同类型的。事实上,这道题是上面两道题的general版本,是寻找带权重的path。在Un...
  • linhuanmars
  • linhuanmars
  • 2014-03-27 07:04
  • 8682

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

【064-Minimum Path Sum(最小路径和)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a m x n grid filled with non-negative numbers, find a path from top left to b...
  • DERRANTCM
  • DERRANTCM
  • 2015-08-02 06:05
  • 2390

LeetCode || Minimum Path Sum

Minimum Path Sum  Total Accepted: 19916 Total Submissions: 63796My Submissions Question  Solution  Given a m...
  • jiadebin890724
  • jiadebin890724
  • 2014-10-19 11:40
  • 4297

[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 minimizes ...
  • SunnyYoona
  • SunnyYoona
  • 2015-02-04 15:55
  • 1715

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 numbers, find a path from top lef...
  • dragon_dream
  • dragon_dream
  • 2014-02-26 22:09
  • 2472

(Java)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 minimizes the sum o...
  • u012848330
  • u012848330
  • 2016-10-07 16:25
  • 189

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

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

LeetCode 209 - Minimum Size Subarray Sum

一、问题描述 Description:Description: Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which ...
  • lisong694767315
  • lisong694767315
  • 2015-05-12 12:50
  • 6091

leetcode 209 : Minimum Size Subarray Sum

leetcode : Minimum Size Subarray Sum
  • xudli
  • xudli
  • 2015-05-14 06:15
  • 8239
    个人资料
    • 访问:192354次
    • 积分:4410
    • 等级:
    • 排名:第8109名
    • 原创:245篇
    • 转载:113篇
    • 译文:0篇
    • 评论:30条
    最新评论