博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode_num13_Climbing Stairs
阅读量:6851 次
发布时间:2019-06-26

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

称号:

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?

非常easy的思路。由于一次能够走1~2步,所以到达第n级能够从第n-1级,也能够从第n-2级。

设到达第n级的方法有s(n)种,s(n)=s(n-1)+s(n-2)

一開始准备用递归做。代码例如以下:

class Solution:    # @param n, an integer    # @return an integer    def climbStairs(self, n):        if n<=2:            return n        else:            return self.climbStairs(n-1)+self.climbStairs(n-2)
结果在n=35的时候TLE了。这进一步说明递归的算法效率比較低,但从思路上比較简单明了。

于是,转向迭代了,代码例如以下:

class Solution:    # @param n, an integer    # @return an integer    def climbStairs(self, n):        if n<=1:            return n        else:            s=[0 for i in range(n)]            s[0]=1  #到达第1级            s[1]=2  #到达第2级            for i in range(2,n):                s[i]=s[i-1]+s[i-2]            return s[n-1] #到达第n级
在此引入一个数组s,记录到达第n级的方法,然实际要求的返回值是s[n],数组s中的前n-1项存储值是多余的。

于是进行改进。设s1为走一步到达方法数。s2为走两步到达的方法数。那么到达第n级台阶时,s(n)=s1+s2,当中s1=s(n-1),s2=s(n-2);到达第n+1级台阶时。s(n+1)=s1+s2,当中s1=s(n)=上一步的s1+s2, s2=s(n-1)=上一步的s1,所以仅仅须要记录s1和s2的值。无需记录n个值

class Solution:    # @param n, an integer    # @return an integer    def climbStairs(self, n):        if n<=1:            return n        else:            s1=1            s2=1            for i in range(1,n):                s=s1+s2                s2=s1                s1=s            return s
这应该是比較简单的方法了。受教了。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
生成唯一编码
查看>>
C# Directory.GetFiles()获取文件时如果是根目录时有隐藏文件则报错的处理
查看>>
POJ 3320 (尺取法+Hash)
查看>>
名校公开课网站汇总
查看>>
CodeForces 620E New Year Tree
查看>>
ZOJ 2059 The Twin Towers
查看>>
阿里云系列——5.网站云解析快速配置(简单+免费+详细+最新)
查看>>
python简单爬虫爬取百度百科python词条网页
查看>>
分享git的常用命令
查看>>
《代码大全》阅读笔记-13-不常见的数据类型
查看>>
写给精明Java开发者的测试技巧
查看>>
excel表格快捷键
查看>>
Robot Framework自动化测试Selenium2Library库详细用法
查看>>
多线程间通信之AutoResetEvent和ManualResetEvent的原理分析和开发示例
查看>>
C#中 @ 的3种用途
查看>>
模板方法模式(Template Pattern)
查看>>
Instr() 函数
查看>>
hdu-acm steps Max sum
查看>>
Radar Installation
查看>>
组队项目四则运算成果
查看>>