mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
update 0070.爬楼梯:改错字,优化代码风格
This commit is contained in:
@ -53,7 +53,7 @@ dp[i]: 爬到第i层楼梯,有dp[i]种方法
|
||||
|
||||
2. 确定递推公式
|
||||
|
||||
如果可以推出dp[i]呢?
|
||||
如何可以推出dp[i]呢?
|
||||
|
||||
从dp[i]的定义可以看出,dp[i] 可以有两个方向推出来。
|
||||
|
||||
@ -73,7 +73,7 @@ dp[i]: 爬到第i层楼梯,有dp[i]种方法
|
||||
|
||||
在回顾一下dp[i]的定义:爬到第i层楼梯,有dp[i]中方法。
|
||||
|
||||
那么i为0,dp[i]应该是多少呢,这个可以有很多解释,但都基本是直接奔着答案去解释的。
|
||||
那么i为0,dp[i]应该是多少呢,这个可以有很多解释,但基本都是直接奔着答案去解释的。
|
||||
|
||||
例如强行安慰自己爬到第0层,也有一种方法,什么都不做也就是一种方法即:dp[0] = 1,相当于直接站在楼顶。
|
||||
|
||||
@ -91,7 +91,7 @@ dp[i]: 爬到第i层楼梯,有dp[i]种方法
|
||||
|
||||
我相信dp[1] = 1,dp[2] = 2,这个初始化大家应该都没有争议的。
|
||||
|
||||
所以我的原则是:不考虑dp[0]如果初始化,只初始化dp[1] = 1,dp[2] = 2,然后从i = 3开始递推,这样才符合dp[i]的定义。
|
||||
所以我的原则是:不考虑dp[0]如何初始化,只初始化dp[1] = 1,dp[2] = 2,然后从i = 3开始递推,这样才符合dp[i]的定义。
|
||||
|
||||
4. 确定遍历顺序
|
||||
|
||||
@ -163,7 +163,7 @@ public:
|
||||
|
||||
这道题目还可以继续深化,就是一步一个台阶,两个台阶,三个台阶,直到 m个台阶,有多少种方法爬到n阶楼顶。
|
||||
|
||||
这又有难度了,这其实是一个完全背包问题,但力扣上没有这种题目,所以后续我在讲解背包问题的时候,今天这道题还会拿从背包问题的角度上来再讲一遍。
|
||||
这又有难度了,这其实是一个完全背包问题,但力扣上没有这种题目,所以后续我在讲解背包问题的时候,今天这道题还会从背包问题的角度上来再讲一遍。
|
||||
|
||||
这里我先给出我的实现代码:
|
||||
|
||||
@ -194,7 +194,7 @@ public:
|
||||
|
||||
这一连套问下来,候选人算法能力如何,面试官心里就有数了。
|
||||
|
||||
**其实大厂面试最喜欢问题的就是这种简单题,然后慢慢变化,在小细节上考察候选人**。
|
||||
**其实大厂面试最喜欢的问题就是这种简单题,然后慢慢变化,在小细节上考察候选人**。
|
||||
|
||||
|
||||
|
||||
@ -255,37 +255,37 @@ class Solution {
|
||||
class Solution:
|
||||
def climbStairs(self, n: int) -> int:
|
||||
# dp[i] 为第 i 阶楼梯有多少种方法爬到楼顶
|
||||
dp=[0]*(n+1)
|
||||
dp[0]=1
|
||||
dp[1]=1
|
||||
for i in range(2,n+1):
|
||||
dp[i]=dp[i-1]+dp[i-2]
|
||||
dp = [0]*(n+1)
|
||||
dp[0] = 1
|
||||
dp[1] = 1
|
||||
for i in range(2, n+1):
|
||||
dp[i] = dp[i-1] + dp[i-2]
|
||||
return dp[n]
|
||||
|
||||
# 空间复杂度为O(1)版本
|
||||
class Solution:
|
||||
def climbStairs(self, n: int) -> int:
|
||||
dp=[0]*(n+1)
|
||||
dp[0]=1
|
||||
dp[1]=1
|
||||
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
|
||||
tmp = dp[0] + dp[1]
|
||||
dp[0] = dp[1]
|
||||
dp[1] = tmp
|
||||
return dp[1]
|
||||
```
|
||||
|
||||
### Go
|
||||
```Go
|
||||
func climbStairs(n int) int {
|
||||
if n==1{
|
||||
if n == 1 {
|
||||
return 1
|
||||
}
|
||||
dp:=make([]int,n+1)
|
||||
dp[1]=1
|
||||
dp[2]=2
|
||||
for i:=3;i<=n;i++{
|
||||
dp[i]=dp[i-1]+dp[i-2]
|
||||
dp := make([]int, n+1)
|
||||
dp[1] = 1
|
||||
dp[2] = 2
|
||||
for i := 3; i <= n; i++ {
|
||||
dp[i] = dp[i-1] + dp[i-2]
|
||||
}
|
||||
return dp[n]
|
||||
}
|
||||
|
Reference in New Issue
Block a user