mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update 0070.爬楼梯.md
This commit is contained in:
@ -251,32 +251,66 @@ class Solution {
|
||||
```
|
||||
|
||||
### Python
|
||||
|
||||
动态规划(版本一)
|
||||
```python
|
||||
# 空间复杂度为O(n)版本
|
||||
class Solution:
|
||||
def climbStairs(self, n: int) -> int:
|
||||
# dp[i] 为第 i 阶楼梯有多少种方法爬到楼顶
|
||||
dp = [0]*(n+1)
|
||||
dp[0] = 1
|
||||
if n <= 1:
|
||||
return n
|
||||
|
||||
dp = [0] * (n + 1)
|
||||
dp[1] = 1
|
||||
for i in range(2, n+1):
|
||||
dp[i] = dp[i-1] + dp[i-2]
|
||||
dp[2] = 2
|
||||
|
||||
for i in range(3, n + 1):
|
||||
dp[i] = dp[i - 1] + dp[i - 2]
|
||||
|
||||
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)版本
|
||||
class Solution:
|
||||
def climbStairs(self, n: int) -> int:
|
||||
dp = [0]*(n+1)
|
||||
dp[0] = 1
|
||||
dp[1] = 1
|
||||
for i in range(2,n+1):
|
||||
tmp = dp[0] + dp[1]
|
||||
dp[0] = dp[1]
|
||||
dp[1] = tmp
|
||||
return dp[1]
|
||||
```
|
||||
if n <= 1:
|
||||
return n
|
||||
|
||||
prev1 = 1
|
||||
prev2 = 2
|
||||
|
||||
for i in range(3, n + 1):
|
||||
total = prev1 + prev2
|
||||
prev1 = prev2
|
||||
prev2 = total
|
||||
|
||||
return prev2
|
||||
|
||||
|
||||
```
|
||||
### Go
|
||||
```Go
|
||||
func climbStairs(n int) int {
|
||||
|
Reference in New Issue
Block a user