triangle

题目:牛客网

解题思路:

链接: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);
    }
}

 

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务