leetcode 120. Triangle

来源:互联网 发布:手机怎么联系淘宝卖家 编辑:程序博客网 时间:2024/06/03 19:57

这道题用的是动态规划

相对于上一行,每一行除了两端的数外,都有两种路径可以选

所以选那个小的就行了

public class Solution {    public int minimumTotal(List<List<Integer>> triangle) {        List<Integer> list;        if(triangle.size()==0){            return 0;        }else if(triangle.size()==1){           list=triangle.get(0);           return list.get(0);        }        list=triangle.get(0);        for(int i=1;i<triangle.size();i++){            List<Integer> temp=triangle.get(i);            List<Integer> answear=new LinkedList<>();            for(int j=0;j<temp.size();j++){                if(j==0){                    answear.add(temp.get(0)+list.get(0));                }else if(j==temp.size()-1){                    answear.add(temp.get(j)+list.get(list.size()-1));                }else{                    answear.add(Math.min(list.get(j-1)+temp.get(j),list.get(j)+temp.get(j)));                }            }            list=answear;        }        int min=Integer.MAX_VALUE;        for(int i=0;i<list.size();i++){            min=Math.min(min,list.get(i));        }        return min;    }}


0 0