[DP]120. Triangle
아이디어는 대신을 참고하여 매우 상세하다.https://kingsfish.github.io/2017/08/26/Leetcode-120-Triangle/이 문제의 관건은 아래에서 위로의DP를 사용하는 데 있다.
이 두 문제를 어떻게 해결할 것인가를 생각할 때 갑자기 2차원 DP 문제를 생각할 때 공간 최적화 방법이 생각났다. 2차원 DP 문제도 수치를 잃어버리는 문제가 있는데 이것은 역순으로 이 문제를 해결하는 것이다.
이 문제를 운용할 때 우리는 자정에서 아래로 자정으로 바꿀 수 있다. 매번 이 노드의 두 아이의 수치 크기를 비교할 때마다 작은 그 아이의 노드의 값에 자체 노드의 값을 더하면 이 노드 이하의 최소 경로와 이를 정점까지 유추할 수 있다.이 두 가지 방식은 결과의 정확성에 아무런 영향을 미치지 않는다. 그러면 첫 번째 수치 저장 문제를 해결할 수 있고 우리는 이렇게 하면 두 번째 문제를 해결할 수 있다는 것을 발견했다. 이 알고리즘에 따라 마지막 최소 경로와 틀림없이 dp(0)에 저장될 것이다. 그러면 마지막으로 dp에 대한 반복 시간을 절약할 수 있다.
이 알고리즘은 결과를 저장하기 위해 1차원 그룹을 사용했는데 공간 복잡도는 O(n)(n은 삼각형 층수)이다.동시에 이 알고리즘은 두 층의 순환이 있기 때문에 시간 복잡도는 O(n^2)이다.
class Solution {
public int minimumTotal(List> triangle) {
if(triangle == null || triangle.size()== 0)return 0;
int[] dp = new int[triangle.size()+1];// num, size== ; ,size+1
//
for(int i = triangle.size()-1; i>=0; i--){
List sublist = new ArrayList(triangle.get(i));
for(int j = 0; j< sublist.size(); j++){
dp[j] = Math.min(dp[j], dp[j+1])+sublist.get(j);//start-> , ; ->min(left_path,right_path)+self
}
}
return dp[0];
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.