[일일 1문제 leetcode] 70 Climbing Stairs
2481 단어 Leetcode 솔솔
본 주제의 Solution은 매우 상세한 분석 설명을 제공하므로 아래에서 제공한 주소를 참고할 수 있습니다.여기서 DP 방법을 사용하여 문제를 하위 문제로 분해합니다.상태 정의: ii는 사다리의 ii층을 나타내고 ii층에 도달하는 상태는 두 가지 방법이 있다.
상태 이동 방정식: f[i]=f[i-3-1]+f[i-3-2] f[i] = f[i-3-1] + f[i-32]
너는 이 방정식이 매우 낯익다고 느낄 것이다. 그것이 바로 유명한 피보나치 수열 표현식이다. 단지 조건 i>=2i>=2를 추가하기만 하면 된다.단지 이 제목에서 시작된 두 수는 [1,2][1,2]이지 [1,1][1,1]이 아니다.
코드는 다음과 같습니다.
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n == 0 or n==1 or n==2:
return n
# f[i] = f[i-1] + f[i-2] ; f[1]=1,f[2]=2
f = list(range(n+1))
f[1]=1
f[2]=2
for i in range(3,n+1):
f[i] = f[i-1] + f[i-2]
return f[n]
참조 링크: 동적 계획에 대한 답변을 알고 있는 Letcode Solution