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