LeetCode Triangle

原创 2015年07月07日 14:33:00

Description:

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

For example, given the following triangle

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

Solution:

前面做过类似的题目,用DP解决。可以从下到上,也可以从上到下。这里用了从下到上,因为这样,dp[0][0]就是最终的结果;否则从上到下,需要最后一层进行一次遍历。

dp[i][j]表示从最后一层到这个点,最短的和。状态转移方程:

dp[i][j] = dp[i][j] + min( dp[i+1][j], dp[i+1][j+1] );

import java.util.*;

public class Solution {
	public int minimumTotal(List<List<Integer>> triangle) {
		int n = triangle.size();
		int dp[][] = new int[n][n];

		Iterator<List<Integer>> lineIterator = triangle.iterator();
		for (int i = 0; i < n; i++) {
			ArrayList<Integer> line = (ArrayList<Integer>) lineIterator.next();
			Iterator<Integer> ite = line.iterator();
			for (int j = 0; j <= i; j++) {
				dp[i][j] = ite.next();
			}
		}

		for (int i = n - 2; i >= 0; i--) {
			for (int j = 0; j <= i; j++)
				dp[i][j] += Math.min(dp[i + 1][j], dp[i + 1][j + 1]);
		}

		return dp[0][0];
	}
}


相关文章推荐

LeetCode-120.Triangle

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n...

LeetCode 119. Pascal's Triangle II

题目: Given an index k, return the kth row of the Pascal’s triangle.For example, given k = 3, Return...

【leetcode】Pascal's Triangle[java]

public class Solution { public List> generate(int numRows) { //打印前n行的list //由上一个list产...

leetcode:Pascal's Triangle II

题目地址:

leetcode题解-120. Triangle

题目:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacen...

《leetCode》: Pascal's Triangle

题目Given numRows, generate the first numRows of Pascal's triangle.For example, given numRows = 5, Ret...

84_leetcode_triangle

1 int minimumTotal(vector > &triangle) { if(triangle.size() == 0 || triangle[0]...
  • ezzffzz
  • ezzffzz
  • 2014年06月22日 11:08
  • 173

LeetCode - 118. Pascal's Triangle

这道题目是有关三角形的题目,因此可能会涉及到二维数组的问题,在处理这样的三角形问题的时候,有一个比较好的方法就是将三角形当作半个矩阵来看,这样可以比较方便地理清元素下标之间的关系。比如题目中给出的例子...

LeetCode 118. Pascal's Triangle

题目很简单,输入一个数字n,返回一个n行的杨辉三角。解题思路也很简单,我们知道杨辉三角的第n+1行第m+1列的元素为c(n,m)=n!/[m!(n-m)!]。所以我们写个一个函数可以返回c(n,m),...

【LeetCode】Pascal's Triangle & II 解题报告

杨辉三角,分别求前n行和第n行。 【求杨辉三角前n行】 Given numRows, generate the first numRows of Pascal's triangle. For e...
  • ljiabin
  • ljiabin
  • 2014年10月20日 17:45
  • 3070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Triangle
举报原因:
原因补充:

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