LeetCode120 - Triangle
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode120 - Triangle相关的知识,希望对你有一定的参考价值。
题目描述:
思路1:
利用动态规划。由于空间复杂度的限制,直接在triangle数组上进行修改,即把triangle数组当作dp数组。当j == 0时(即每一行的第一个元素),triangle[i][j] += triangle[i - 1][j];当j == col - 1时(即每一行的最后一个元素),triangle[i][j] += triangle[i - 1][j - 1];其余情况,triangle[i][j] += min(triangle[i - 1][j - 1], triangle[i - 1][j])。
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { int row = triangle.size(); if (row <= 0)//判空 return 0; for(int i=1;i<row;i++) for (int j = 0;j < triangle[i].size();j++) { if (j == 0) triangle[i][j] += triangle[i - 1][j]; else if (j == triangle[i].size() - 1) triangle[i][j] += triangle[i - 1][j - 1]; else triangle[i][j] += min(triangle[i - 1][j - 1], triangle[i - 1][j]); } int minSum = INT_MAX; for (int k = 0;k < triangle[row - 1].size();k++)//在最后一行中找出最小的那个就是最小的和路径 if (triangle[row - 1][k] < minSum) minSum = triangle[row - 1][k]; return minSum; } };
以上是关于LeetCode120 - Triangle的主要内容,如果未能解决你的问题,请参考以下文章