动态规划问题:三角形最小路径和

一、题目

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

二、思路

动态规划:状态转移方程为dp[j] = Math.min(dp[j], dp[j+1]) + list.get(j)

三、实现

public int minimumTotal(List<List<Integer>> triangle) {
        if (triangle.size() == 0) {
            return 0;
        }

        if (triangle.size() == 1) {
            return triangle.get(0).get(0);
        }

        int[] dp = new int[triangle.size() + 1];

        for (int i = triangle.size() - 1; i >= 0; i--) {
            List<Integer> list = triangle.get(i);
            
            for (int j = 0; j < list.size(); j++) {
                dp[j] = Math.min(dp[j], dp[j+1]) + list.get(j);
            }
        }
        
        return dp[0];
    }

发布了83 篇原创文章 · 获赞 0 · 访问量 4516

猜你喜欢

转载自blog.csdn.net/zhangdx001/article/details/105473781