[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
説明: 頂上まで登るには 1. 1 段 + 1 段 + 1 段 2. 1 段 + 2 段 3. 2 段 + 1 段の 3 つの方法があります。

 

制約:

  • 1 <= n <= 45

パイソン

				
					class 解: # 時間計算量: O(n) # 空間計算量: O(n) # ブルートフォースによるキャッシュ # def crimeStairs(self, n: int) -> int: # memo = [0] * (n+1) # return self.climb_Stairs(0, n, memo) # 時間計算量: O(n) # 空間計算量: O(n) # def crime_Stairs(self, i: int, n: int, memo: list) -> int: # if (i > n): # return 0 # if (i == n): # return 1 # if (memo[i]): # return 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 crimeStairs( self 、n: int): # if n == 1: # return 1 # dp = [0] * (n + 1) # dp[1] = 1 # dp[2] = 2 # for i in range(3, n+1): # dp[i] = dp[i-1] + dp[i-2] # return dp[n] # 時間計算量: O(n) # 空間計算量: O(1) # フィボナッチ数 def CrimeStairs(self, n: int) -> int: n == 1 の場合: 1 を返す first = 1 2 番目 = 2 3 番目 = 0 for i in range(3, n+1): 3 番目 = 1 番目 + 2 番目 1 番目 = 2 番目 2 番目= 3 番目は 2 番目を返します n = 50 print(Solution().climbStairs(50))
				
			
ja日本語