120. 三角形最小路径和

package leetcode;

import java.util.ArrayList;
import java.util.List;

public class demo_120 {
    //动态规划
    public int minimumTotal(List<List<Integer>> triangle) {
        int sum;
        int[][] dp=new int[triangle.size()][triangle.get(triangle.size()-1).size()];
        dp[0][0]=triangle.get(0).get(0);
        for(int i=1;i<dp.length;i++) {
            for(int j=0;j<=triangle.get(i-1).size();j++) {
                if(j==0) {
                    dp[i][j]=dp[i-1][j]+triangle.get(i).get(j);
                    continue;
                }
                if(j==triangle.get(i-1).size()) {
                    dp[i][j]=dp[i-1][j-1]+triangle.get(i).get(j);
                    continue;
                }
                dp[i][j]=Math.min(dp[i-1][j], dp[i-1][j-1])+triangle.get(i).get(j);
            }
        }
        sum=dp[dp.length-1][0];
        //求出最后一层的最小值即是最终结果
        for(int i=1;i<dp[dp.length-1].length;i++) {
            if(sum>dp[dp.length-1][i]) {
                sum=dp[dp.length-1][i];
            }
        }
        System.out.println(sum);
        return sum;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<List<Integer>> triangle=new ArrayList<List<Integer>>();
        demo_120 d120=new demo_120();
        List<Integer> l1=new ArrayList<Integer>();
        l1.add(2);
        List<Integer> l2=new ArrayList<Integer>();
        l2.add(3);l2.add(4);
        List<Integer> l3=new ArrayList<Integer>();
        l3.add(6);l3.add(5);l3.add(7);
        List<Integer> l4=new ArrayList<Integer>();
        l4.add(4);l4.add(1);l4.add(8);l4.add(3);
        triangle.add(l1);
        triangle.add(l2);
        triangle.add(l3);
        triangle.add(l4);
        d120.minimumTotal(triangle);
    }

}

 

上一篇:L4何时进入私人市场?听听通用汽车、Mobileye的剧透


下一篇:iOS- iOS 7 的后台多任务 (Multitasking) 对比之前的异同、具体机制、变化