leetcode 120. 三角形最小路径和
方法一:回溯法(用递归)
最基本可以将triangle数组看做一个邻接矩阵的变形,采用深度优先搜索的方法自顶向下遍历,如果triangle数组长度为n那么时间复杂度为O(2^n)(或者如果元素个数为N,那么复杂度N(log(N))
方法二:动态规划
自底向上递推:可以使用一维数组来完成,从而O(n)时间O(n)空间
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { int len=triangle.size(); int dp[len]; for(int i=0;i<len;i++){ dp[i]=triangle[len-1][i]; } for(int i=len-2;i>=0;i--){ for(int j=0;j<=i;j++){ dp[j]=min(dp[j],dp[j+1])+triangle[i][j]; } } return dp[0]; } };