120. Triangle (三角形中最小路径之和)
https://leetcode.com/problems/triangle/?envType=study-plan-v2&envId=top-interview-150
题目解答:
https://leetcode.cn/problems/IlPe0q/solutions/1036365/san-jiao-xing-zhong-zui-xiao-lu-jing-zhi-srun/
详细题解:
https://blog.csdn.net/qq_41878358/article/details/105671159
class Solution { // public int minimumTotal(List<List<Integer>> triangle) { // //if(0<j<i) dp[i][j]=Math.min(dp[i-1][j-1], dp[i-1][j]) // //if(j==i) dp[i][i]=dp[i-1][j-1] // //if(j=0) dp[i][0]=dp[i-1][0] // // i=row num, j=column num // int[] res = new int[triangle.size() + 1]; // for (int i = triangle.size() - 1; i >= 0; i--) { // for (int j = 0; j < triangle.get(i).size(); j++) { // res[j] = Math.min(res[j], res[j + 1]) + triangle.get(i).get(j); // } // } // return res[0]; // } public int minimumTotal(List<List<Integer>> triangle) { if(triangle==null || triangle.size()==0){ return 0; } int rowSize = triangle.size(); // dp[i][j] 表示从最底部到 triangle[i][j] 的最小路径 int[][] dp= new int[rowSize][rowSize]; for(int i=0; i<triangle.get(rowSize-1).size(); i++){ dp[rowSize-1][i] = triangle.get(rowSize-1).get(i); } for(int i=rowSize-2; i>=0; i--){ for(int j=0; j<triangle.get(i).size(); j++){
// 递推公式 dp[i][j] = Math.min(dp[i+1][j], dp[i+1][j+1]) + triangle.get(i).get(j); } } return dp[0][0]; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-11-19 使用jvm命令定位线上问题