Triangle
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
Example
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.
public class Solution { /** * @param triangle: a list of lists of integers. * @return: An integer, minimum path sum. */ public int minimumTotal(int[][] triangle) { // write your code here if(triangle.length==0) return 0; int n=triangle.length; int[][] minSum=new int[n][n]; for(int j=n-1;j>=0;j--) { for(int i=0;i<=j;i++) { if(j==n-1) { minSum[j][i]=triangle[j][i]; } else { int a=minSum[j+1][i]+triangle[j][i]; int b=minSum[j+1][i+1]+triangle[j][i]; minSum[j][i]=Math.min(a,b); } } } return minSum[0][0]; } }