博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.leetcode70-climbing stairs
阅读量:4951 次
发布时间:2019-06-11

本文共 1281 字,大约阅读时间需要 4 分钟。

1.题目描述

You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

爬楼梯,每次只能跨过一个或两个台阶,有多少种爬台阶的方式

2.题目分析

与斐波那契数列算法类似,递归调用 F(n)=F(n-1)+F(n-2)

3.解题思路

算法一:

1 class Solution(object): 2     def climbStairs(self, n): 3         """ 4         :type n: int 5         :rtype: int 6         """ 7         def steps(n): 8             if n==1: 9                 return 110             elif n==2:11                 return 212             else:13                 return steps(n-1)+steps(n-2)14         return steps(n)

算法二:

1 class Solution(object): 2     def climbStairs(self, n): 3         """ 4         :type n: int 5         :rtype: int 6         """ 7         if n==0: 8             return 0 9         elif n==1:10             return 111         elif n==2:12             return 213         else:14             x1,x2=1,215             while n-2>0:16                 x1,x2=x2,x1+x217                 n-=118             return f2

第一种算法采用的是递归调用函数本身,结果输入35的时候就Time Limit Exceeded,第二种算法没有递归调用函数,而是将值给了参数x1,x2

4.解题收获

在网上查了查递归与循环的区别,简单讲,递归效率低,但不易出错;循环速度快,但不易解决某些问题。(网址:https://www.cnblogs.com/BeyondAnyTime/archive/2012/05/19/2508807.html )

 

转载于:https://www.cnblogs.com/19991201xiao/p/8414091.html

你可能感兴趣的文章
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
sql 语法大全
查看>>
SQLite移植手记1
查看>>
Java AmericanFlagSort
查看>>
Mysql远程连接报错
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
sqlServer去除字段中的中文
查看>>
HashMap详解
查看>>
Adobe Scout 入门
查看>>
51nod 1247可能的路径
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
如何监视性能和分析等待事件
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
关于UI资源获取资源的好的网站
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
Windows下常用测试命令
查看>>