[120] Leetcode 삼각형 최소 경로

Leetcode (120) 삼각 최소 경로와

제목 설명

삼각형을 감안할 때, 최소 및 하향식 (top-down) 경로를 찾을 수 있습니다. 각 단계는 다음 라인에 인접한 노드로 이동할 수 있습니다.

예를 들어, 삼각형을 제공 :

[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
하향식 최소 경로 (11) (즉, 2 + 3 + 5 + 1 = 11).

설명 :

이 문제를 해결하기 위해 (삼각형으로 행 N 수)에만 O (n)의 추가 공간을 사용할 수있는 경우에, 당신의 알고리즘은 플러스가 될 것입니다.

출처 : 숙박 버튼 (LeetCode)
링크 : HTTPS : //leetcode-cn.com/problems/triangle

사고

DP 변수는 사이트를 저장합니다. M은 층의 수는 m-0에서 1로, I를 제공하고, j는 각 계층의 요소의 인덱스이다.
다음 세 가지 경우 :
J = 0 :
삼각 [I] [J] = 삼각형 [I-1.] [J] 삼각형 + [I] [J]
J = LEN (삼각형 [I] ) - 1 :
삼각 [I] [J] = 삼각형 [I] [J] 삼각형 + [J. 1] [1-I.]
다른 경우 :
[. 1-I] 삼각형 [I] [J] = 분 (삼각형 [J- 1, 삼각형 [I-1 ] [J]) + 삼각형 [I] [J]

코드

class Solution:
    def minimumTotal(self, triangle: List[List[int]]) -> int:
        if triangle == [[]]:
            return 0
        if len(triangle)==1:
            return triangle[0][0]
        m = len(triangle)
        for i in range(1,m):
            for j in range(len(triangle[i])):
                if(j==0):
                    triangle[i][j] = triangle[i-1][j] + triangle[i][j]
                elif(j==len(triangle[i])-1):
                    triangle[i][j] = triangle[i][j] + triangle[i-1][j-1]
                else:
                    triangle[i][j] = min(triangle[i-1][j-1],triangle[i-1][j]) + triangle[i][j]
        return min(triangle[m-1])
게시 97 개 원래 기사 · 원의 찬양 (55) · 전망 (130) 000 +

추천

출처blog.csdn.net/voidfaceless/article/details/104108718