LeetCode解题(第70题)

LeetCode解题(第70题)


假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入:2

输出:2

解释:有两种方法可以爬到楼顶。

1. 1阶+1阶

2. 2阶

示例 1:

输入:3

输出:3

1. 1阶+1阶+1阶

2. 1阶+2阶

3. 2阶+1阶


解析:这道题首先想到是使用递归方法,但是很不幸的超时了。之后改成循环的方式。登上第n阶楼梯方式可以是在n-1阶爬一个台阶,也可以是在n-2阶爬两个台阶。所以可以得出d[n] = d[n-1]+d[n-2]。


代码(Python3版本)

#递归方法,但是提交时超时了
def total(number):
	if number ==1:
		return 1
	if number <=0:
		return 0
	if number ==2:
		return 2
	return total(number-1)+total(number-2)

#改成循环的方式
class Solution:
    def climbStairs(self, n: int) -> int:
        def total(n):
            a, b = 1,2
            for i in range(n-1):
                a, b = b, a + b
            return a
        a = total(n)
        return a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值