From 9a70ce0e8ff38de7f06b9ca7dbe6a15caaf12d7c Mon Sep 17 00:00:00 2001 From: Yuhao Ju Date: Sun, 18 Dec 2022 21:28:00 +0800 Subject: [PATCH] =?UTF-8?q?update=200070.=E7=88=AC=E6=A5=BC=E6=A2=AF?= =?UTF-8?q?=EF=BC=9A=E6=94=B9=E9=94=99=E5=AD=97=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0070.爬楼梯.md | 44 +++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/problems/0070.爬楼梯.md b/problems/0070.爬楼梯.md index 79b2d90b..fb23be7d 100644 --- a/problems/0070.爬楼梯.md +++ b/problems/0070.爬楼梯.md @@ -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] }