120 Triangle 三角形最小路径和
给出一个三角形(数据数组),找出从上往下的最小路径和。每一步只能移动到下一行中的相邻结点上。
比如,给你如下三角形:
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
则从上至下最小路径和为 11(即,2 + 3 + 5 + 1 = 11)
注意:
加分项:如果你可以只使用 O(n) 的额外空间(n是三角形的行数)。
详见:https://leetcode.com/problems/triangle/description/
Java实现:
class Solution { public int minimumTotal(List<List<Integer>> triangle) { int row=triangle.size();//行数 if(row==0){ return 0; } int[] res=new int[row+1];//倒着求,求最后一行到第一行最小和,这样就可以用o(n)空间了 for(int i=row-1;i>=0;--i){ List<Integer> list=triangle.get(i); for(int j=0;j<list.size();++j){ res[j]=Math.min(res[j+1],res[j])+list.get(j); } } return res[0]; } }
参考:https://www.cnblogs.com/grandyang/p/4286274.html