[LeetCode] 0070. 계단오르기

계단 오르기

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

쉬운


계단을 오르는 중입니다. N 정상에 도달하기 위한 단계.

올라갈 수 있을 때마다 1 또는 2 몇 가지 방법으로 정상에 오를 수 있나요?

 

예시 1:

입력: n=2
산출: 2
설명: 정상에 오르는 방법은 1. 1단 + 1단 2. 2단 2가지가 있습니다.

예 2:

입력: n=3
산출: 3
설명: 정상에 오르는 방법은 3가지가 있습니다. 1. 1단 + 1단 + 1단 2. 1단 + 2단 3. 2단 + 1단

 

제약:

  • 1 <= n <= 45

파이썬

				
					class 솔루션: # 시간 복잡도: O(n) # 공간 복잡도: O(n) # 무차별 대입 캐시 # def climbStairs(self, n: int) -> int: # memo = [0] * (n+1) # return self.climb_Stairs(0, n, memo) # 시간 복잡도: O(n) # 공간 복잡도: O(n) # def climb_Stairs(self, i: int, n: int, memo: list) -> int: # if (i > n): # 반환 0 # if (i == n): # 반환 1 # if (memo[i]): # 반환 memo[i] # memo[i] = self.climb_Stairs(i+ 1 , n, memo) + \ # self.climb_Stairs(i+2, n, memo) # return memo[i] # 시간 복잡도: O(n) # 공간 복잡도: O(b) # 동적 프로그래밍 # def climbStairs( self , n: int): n == 1인 경우 #: # 반환 1 # dp = [0] * (n + 1) # dp[1] = 1 # dp[2] = 2 # 범위(3, n+1): # dp[i] = dp[i-1] + dp[i-2] # 반환 dp[n] # 시간 복잡도: O(n) # 공간 복잡도: O(1) # 피보나치 수 def climbStairs(self, n: int) -> int: if n == 1: 1을 반환합니다. 첫 번째 = 1 두 번째 = 2 세 번째 = 0 for i in range(3, n+1): 세 번째 = 첫 번째 + 두 번째 첫 번째 = 두 번째 두 번째 = 세 번째 반환 두 번째 n = 50 print(Solution().climbStairs(50))
				
			
ko_KR한국어