解题思路:
DP
时间复杂度:O(n1) n1是二维数组的大小
空间复杂度:O(n2) n2是三角形的层数
提交代码:
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
for(int row=1;row<triangle.size();row++) {
for(int p=0;p<triangle.get(row).size();p++) {
if(p==0)
triangle.get(row).set(p, triangle.get(row).get(p)+triangle.get(row-1).get(0));
else if(p==triangle.get(row).size()-1)
triangle.get(row).set(p, triangle.get(row).get(p)+triangle.get(row-1).get(p-1));
else {
int pre=Math.min(triangle.get(row-1).get(p),triangle.get(row-1).get(p-1));
triangle.get(row).set(p, triangle.get(row).get(p)+pre);
}
}
}
int min=Integer.MAX_VALUE;
for(int i=0;i<triangle.get(triangle.size()-1).size();i++) {
if(triangle.get(triangle.size()-1).get(i)<min)
min=triangle.get(triangle.size()-1).get(i);
}
return min;
}
}
运行结果: