120. Triangle 三角形最小路径和
生活随笔
收集整理的這篇文章主要介紹了
120. Triangle 三角形最小路径和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Title
給定一個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。
相鄰的結點 在這里指的是 下標 與 上一層結點下標 相同或者等于 上一層結點下標 + 1 的兩個結點。
例如,給定三角形:
[[2],[3,4],[6,5,7],[4,1,8,3] ]自頂向下的最小路徑和為 11(即,2 + 3 + 5 + 1 = 11)。
說明:
如果你可以只使用 O(n) 的額外空間(n 為三角形的總行數)來解決這個問題,那么你的算法會很加分。
動態規劃
自頂向上的動態規劃,經典的題目。
Code
def minimumTotal(self, triangle: List[List[int]]) -> int:for i in range(len(triangle) - 2, -1, -1):for j in range(len(triangle[i])):triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1])return triangle[0][0]復雜度分析
時間復雜度:O(n2),其中 n 是三角形的行數。
空間復雜度:O(1)。
題外話
如果在面試中遇到類似的題目,需要和面試官進行溝通,可以詢問「是否有空間復雜度限制」「是否可以修改原數組」等問題,給出符合條件的算法。
總結
以上是生活随笔為你收集整理的120. Triangle 三角形最小路径和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 核心概念——节点分组 Group
- 下一篇: 编写你的第一个 Django 应用,第