Triangle

来源:互联网 发布:注册域名需要注意什么 编辑:程序博客网 时间:2024/04/29 23:20

此题有很多种解法,对于三角形,看起来,相比自顶向下,自底向上的走法是最省力的,可以省掉一条边的初始化。

public int minimumTotal(int[][] triangle) {

        // write your code here
        
        if (triangle == null || triangle.length == 0 || triangle[0] == null || triangle[0].length == 0) {
            return -1;
        }
        int n = triangle.length;
        int[][] matrix = new int[n][n];
        for (int i = 0; i < n; i++) {
            matrix[n-1][i] = triangle[n-1][i];
        }
        for (int y = n - 2; y >= 0 ; y--) {
            for (int x = 0; x <= y; x++) {
                matrix[y][x] = Math.min(matrix[y+1][x], matrix[y+1][x+1]) + triangle[y][x];
            }
        }
        return matrix[0][0];
}
0 0