题目
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).
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
思路:自底向上,更新最小值
class Solution43 { public int minimumTotal(List> triangle) { int n=triangle.size(); int nums[][]=new int[n][n]; //转换成矩阵 for(int i=0;i
动态规划-代码 import java.util.*; public class UniquePaths { public static void main(String args[]){ Scanner in=new Scanner(System.in); while(in.hasNext()){ int n=in.nextInt(); List
> num=new ArrayList
>(); for(int i=0;i
(); for(int j=0;j<=i;j++){ temp.add(in.nextInt()); } num.add(new ArrayList<>(temp)); } Solution42 test1=new Solution42(); System.out.println(test1.minimumTotal(num)); } } } class Solution42 { public int minimumTotal(List > triangle) { int n=triangle.size(); int nums[][]=new int[n][n]; //转换成矩阵 for(int i=0;i
=0;i--){ for(int j=n-2;j>=0;j--){ nums[i][j]+=Math.min(nums[i+1][j],nums[i+1][j+1]); } } return nums[0][0]; } }