标签:Triangle Writeup len 120 range triangle col dp row
三角形最小路径和
两种解决边界问题的方案
解法一
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
rownum = len(triangle)
dp = [[float("inf") for col in range(rownum + 1)] for row in range(rownum)]
for row in range(rownum):
for col in range(len(triangle[row])):
dp[row][col + 1] = triangle[row][col]
for row in range(1, rownum):
for col in range(1, (len(triangle[row]) + 1)):
dp[row][col] += min(dp[row - 1][col], dp[row - 1][col - 1])
return min(dp[-1])
解法二
不使用额外空间
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
for row in range(1, len(triangle)):
for col in range(len(triangle[row])):
if col == 0:
triangle[row][col] += triangle[row - 1][col]
elif (col + 1) == len(triangle[row]):
triangle[row][col] += triangle[row - 1][col - 1]
else:
triangle[row][col] += min(triangle[row - 1][col],
triangle[row - 1][col - 1])
return min(triangle[-1])
复杂度分析
- 时间复杂度:两种方法都是O(n^2),n为矩阵行数
- 空间复杂度:O(n^2)和O(0)
标签:Triangle,Writeup,len,120,range,triangle,col,dp,row 来源: https://blog.csdn.net/qq_41529090/article/details/114211649
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。