题目:牛客网
解题思路:
链接:https://www.nowcoder.com/questionTerminal/2b7995aa4f7949d99674d975489cb7da?f=discussion
来源:牛客网
注意观察前后2行的位置关系 triangle[i][j]=min(triangle[i+1][j], triangle[i+1][j+1])+triangle[i][j]
给定一个三角形,找出从顶到底的最小路径和,每一步可以从上一行移动到下一行相邻的数字
[
[2], [2],
[3,4], [3, 4], [2],
[6,5,7], ==> [7, 6, 10] ==> [9, 10] ==> [11]
[4,1,8,3]
]
import java.util.ArrayList;
public class Solution {
public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
int level = triangle.size();
for(int i = level-2; i >= 0 ; i--){
int len = triangle.get(i).size();
for(int j =0; j < len ; j++){
int first = triangle.get(i).get(j)+triangle.get(i+1).get(j);
int second = triangle.get(i).get(j)+triangle.get(i+1).get(j+1);
int minnum = Math.min(first, second);
triangle.get(i).set(j, minnum);
}
}
return triangle.get(0).get(0);
}
}