Update 0070.爬楼梯.md

This commit is contained in:
jianghongcheng
2023-06-01 15:14:15 -05:00
committed by GitHub
parent 28cf557d7c
commit 69361bba97

View File

@ -251,32 +251,66 @@ class Solution {
``` ```
### Python ### Python
动态规划(版本一)
```python ```python
# 空间复杂度为O(n)版本 # 空间复杂度为O(n)版本
class Solution: class Solution:
def climbStairs(self, n: int) -> int: def climbStairs(self, n: int) -> int:
# dp[i] 为第 i 阶楼梯有多少种方法爬到楼顶 if n <= 1:
dp = [0]*(n+1) return n
dp[0] = 1
dp = [0] * (n + 1)
dp[1] = 1 dp[1] = 1
for i in range(2, n+1): dp[2] = 2
dp[i] = dp[i-1] + dp[i-2]
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n] return dp[n]
```
动态规划(版本二)
```python
# 空间复杂度为O(3)版本
class Solution:
def climbStairs(self, n: int) -> int:
if n <= 1:
return n
dp = [0] * 3
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
total = dp[1] + dp[2]
dp[1] = dp[2]
dp[2] = total
return dp[2]
```
动态规划(版本三)
```python
# 空间复杂度为O(1)版本 # 空间复杂度为O(1)版本
class Solution: class Solution:
def climbStairs(self, n: int) -> int: def climbStairs(self, n: int) -> int:
dp = [0]*(n+1) if n <= 1:
dp[0] = 1 return n
dp[1] = 1
for i in range(2,n+1): prev1 = 1
tmp = dp[0] + dp[1] prev2 = 2
dp[0] = dp[1]
dp[1] = tmp for i in range(3, n + 1):
return dp[1] total = prev1 + prev2
``` prev1 = prev2
prev2 = total
return prev2
```
### Go ### Go
```Go ```Go
func climbStairs(n int) int { func climbStairs(n int) int {