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之Triangle

题目大意: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to a...
  • zhanghaodx082
  • zhanghaodx082
  • 2014年04月27日 20:28
  • 5279

LeetCode(120)Triangle

题目如下: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adja...
  • feliciafay
  • feliciafay
  • 2014年02月27日 23:50
  • 1625

【LEETCODE】120- Triangle [Python]

【LEETCODE】120- Triangle [Python]
  • aliceyangxi1987
  • aliceyangxi1987
  • 2016年08月17日 00:01
  • 861

[LeetCode]611. Valid Triangle Number

https://leetcode.com/problems/valid-triangle-number/#/description 找出满足组成三角形的三条边的个数 组成三角形条件是两...
  • gqk289
  • gqk289
  • 2017年06月17日 21:18
  • 779

Triangle -- LeetCode

原题链接: http://oj.leetcode.com/problems/triangle/ 这是一道动态规划的题目,求一个三角形二维数组从顶到低端的最小路径和。思路是维护到某一个元素的最小路径和,...
  • linhuanmars
  • linhuanmars
  • 2014年04月09日 02:52
  • 11605

Triangle Leetcode Python

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n...
  • hyperbolechi
  • hyperbolechi
  • 2015年01月19日 02:51
  • 747

【LeetCode】120. Triangle 基于C++和Java的分析及解法,动态规划

120. Triangle Total Accepted: 69567 Total Submissions: 229977 Difficulty: Medium Given a triang...
  • Jin_Kwok
  • Jin_Kwok
  • 2016年05月15日 21:05
  • 1109

【LeetCode-面试算法经典-Java实现】【120-Triangle(三角形)】

【120-Triangle(三角形)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a triangle, find the minimum path sum...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月14日 06:13
  • 2494

Pascal's Triangle -- LeetCode

原题链接: http://oj.leetcode.com/problems/pascals-triangle/  这道题比较简单,属于基础的数组操作。基本思路是每层保存前一行的指针,然后当前航数据根据...
  • linhuanmars
  • linhuanmars
  • 2014年04月10日 00:56
  • 12774

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 ...
  • sunao2002002
  • sunao2002002
  • 2015年06月06日 01:38
  • 2223
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Triangle
举报原因:
原因补充:

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