【leetcode】 1289. 최소 떨어지는 경로 합 II

다음 내용은 다음과 같습니다

정수 사각형 격자 감안  arr하는  영이 아닌 시프트 떨어지는 경로  의 각 행에서 정확히 하나의 원소를 선택  arr인접한 행 선택에는 두 가지 요소가 동일한 열에 없는지 등.

비 제로의 변화와 떨어지는 경로의 최소 금액을 돌려줍니다.

예 1 :

입력 : 도착 = [1,2,3], [4,5,6], [7,8,9] 
출력 : 13 
: 설명 
가능한 전도 경로는 : 
[1,5,9-] [1 , 5,7], [1,6,7], [1,6,8], 
[2,4,8], [2,4,9], [파 -2,6,7-] [2,6 8], 
[3,4,8], [3,4,9], [3,5,7], [3,5,9]가 
최소 합과 하강 경로는 [1,5,7] 그래서 대답은 13입니다.

제약 :

  • 1 <= arr.length == arr[i].length <= 200
  • -99 <= arr[i][j] <= 99

솔루션의 개요 : DP [I] [j]가 i 번째 행 j 번째 요소는 0 ~ I 라인 간격으로 얻어진 최소 값을 취하고있다 함. 그러면 명확 DP [I] [J] = 분 (DP [I] [J], (DP) [I-1] [K] + 도착 [I] [J]), J! = K. 이 경우 시간 복잡도는 O (n)은 시간 제한이다. 모든 J에 대한 사실을 다시 생각해 상기 DP [I-1]만큼 물론 열과 J의 최소값이 동일하지 않을 수있는 등의 최소 값을 발견한다. DP 만 기록 할 필요가 [I-1]와 최소 시간 라인 최소값 및 인덱스 J의 최소값을 작은 값 또는 최소값으로 동일한 시간이 걸리는 경우.

다음과 같이 코드입니다 :

클래스 솔루션 (객체)
     DEF minFallingPathSum (자기, 도착)
         "" " 
        : 타입 도착리스트 [리스트 [INT] 
        : RTYPE : INT 
        " "" 
        DP = [플로트 ( " INF " )] * 렌 (도착 )  _ 도착]
         에 대한 I 범위 (LEN (도착)) 
            DP [0] [I] = 도착 [0] [i]는 

        DEF getMin (도착) 
            min_val = 플로트 ( " INF " ) 
            min_inx = 0
             에 대한에서범위 (렌 (도착))
                 경우 min_val> 도착 [I] : 
                    min_val = 도착 [I] 
                    min_inx = 리턴 (min_val, min_inx) 

        DEF getSecMin (도착, min_inx) 
            sec_min_val = 플로트 ( " INF " ) 
            sec_min_inx = 0
             위한 I 범위 (렌 (도착))
                 경우 나 == min_inx : 계속할 
                경우 sec_min_val> 도착 [I] 
                    sec_min_val =도착 [I] 
                    sec_min_inx = 리턴 (sec_min_val, sec_min_inx)를 

        위한 I  범위 (1 : 렌 (도착)) 
            min_val, min_inx = getMin (DP [I-1 ]) 
            sec_min_val, sec_min_inx = getSecMin (DP [I-1 ] min_inx)
             에 대한 J 범위 (LEN (도착))
                 경우 J == min_inx : 
                    DP [I] [J] = 분 (DP [I] [J], (DP) [I-1] [sec_min_inx] + 도착 [I] [J])
                 다른 : 
                    DP [I] [J]= 분 (DP [I] [J], DP [i가 1 - [min_inx] + 도착 [I] [J])
         리턴 분 (DP [-1])

 

추천

출처www.cnblogs.com/seyjs/p/12041890.html