题目链接 思路 这个题就是要区分一下边界数字和非边界数字边界数字的最大值只能是上一个边界+cost[i]但是非边界的数字可以是上一行相邻数字的最小值+cost[i] class Solution { public int minimumTotal(List<List<Integer>> triangle) { List<Integer> dp = triangle.get(0); for(int i = 1 ; i < triangle.size() ; i++){ List<Integer> list = triangle.get(i); list.set(0,list.get(0) + dp.get(0)); for(int j = 1 ; j < list.size() - 1 ; j++){ list.set(j,Math.min(dp.get(j),dp.get(j-1)) + list.get(j)); } list.set(list.size()-1,list.get(list.size()-1) + dp.get(dp.size()-1)); dp = list; } int min = Integer.MAX_VALUE; for(int num: dp){ if(num < min) min = num; } return min; } }