Leetcode—120. 三角形最小路径和【中等】(腾讯校招面试题)
2025每日刷题(219)
Leetcode—120. 三角形最小路径和
实现代码
class Solution {
public:int minimumTotal(vector<vector<int>>& triangle) {const int m = triangle.size();vector<int> dp(m + 1, 0);// dp[0] = 2// dp[0] = 5 dp[1] = 6// dp[0] = 11 dp[1] = triangle[i][j] + min(dp[j - 1], dp[j])for(int i = 0; i < m; ++i) {vector<int> tmp(dp);for(int j = 0; j <= i; ++j) {if(j == 0 && i == 0) {tmp[j] = triangle[i][j];} else if(j == 0) {tmp[j] += triangle[i][j];} else if(j == i) {tmp[j] = triangle[i][j] + dp[j - 1];} else {tmp[j] = triangle[i][j] + min(dp[j - 1], dp[j]);}}dp = tmp;}return *min_element(dp.begin(), dp.begin() + m);}
};
运行结果
逆向实现代码
class Solution {
public:int minimumTotal(vector<vector<int>>& triangle) {for(int i = triangle.size() - 2; i >= 0; --i) {for(int j = 0; j <= i; ++j) {triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1]);}}return triangle[0][0];}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!