Cllimbing Stairs [LeetCode 70]
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- 思路分析
很自然的会想到递归,假设 n 级台阶有 T(n) 种不同走法。最后一步存在两种情况:剩下 1 级台阶,或者,剩下 2 级台阶。
第一种情形,则前面 n-1 步有 T(n-1)种走法;
第二种情形,则前面 n-2 步有 T(n-2)种走法。
故有:T(n) = T(n-1) + T(n-2),其中 T(1) = 1, T(2) = 2。正好是 Fibonacci 数列!
递归算法能缩短程序代码、提高编程效率,但是它也有致命的弱点:如果递归调用地层次过多甚至无休止的进行递归调用,将耗尽系统资源(栈满),出现“堆栈溢出错误”。所幸的是,一般可以用递归解决的问题也可以用循环解决!
3- Python实现
# -*- coding: utf-8 -*-
# Climbing Stairs
# 递归实现 def climbStairs(n):
if not n: return 0
solv = []
solv.extend([1, 2]) # T(1), T(2)
if n >= 3:
for i in range(2, n):
solv.append(solv[i-1] + solv[i-2])
return solv[n-1]
# -*- coding: utf-8 -*-
# Climbing Stairs
# 循环实现 def climbStairs(n):
if not n: return 0
if n == 1: return 1
if n == 2: return 2 a, b = 1, 2
for i in range(2, n):
a, b = b, a + b
return b
Cllimbing Stairs [LeetCode 70]的更多相关文章
- Min Cost Climbing Stairs - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Min Cost Climbing Stairs - LeetCode 注意点 注意边界条件 解法 解法一:这道题也是一道dp题.dp[i]表示爬到第i层 ...
- Climbing Stairs - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Climbing Stairs - LeetCode 注意点 注意边界条件 解法 解法一:这道题是一题非常经典的DP题(拥有非常明显的重叠子结构).爬到n ...
- [LeetCode] 70. Climbing Stairs 爬楼梯问题
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- LeetCode 70. 爬楼梯(Climbing Stairs)
70. 爬楼梯 70. Climbing Stairs 题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意: 给定 ...
- 42. leetcode 70. Climbing Stairs
70. Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time y ...
- Leetcode#70. Climbing Stairs(爬楼梯)
题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解 ...
- LN : leetcode 70 Climbing Stairs
lc 70 Climbing Stairs 70 Climbing Stairs You are climbing a stair case. It takes n steps to reach to ...
- [LeetCode] 70. Climbing Stairs 爬楼梯
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- leetCode 70.Climbing Stairs (爬楼梯) 解题思路和方法
Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time you ...
随机推荐
- 用Systemtap探索MySQL
http://www.actionsky.com/docs/archives/168#Systemtap 目录 1 Systemtap 2 Systemtap 观测点的支持程度 2.1 官方编译的My ...
- IT思想类智力题
1. 台阶问题 题目:一个人上台阶可以一次上一个或两个,问这个人上n层的台阶,一共有多少种走法. 本题可以采用递归的方法来设计模型,先从数字的规律入手:假设共有i阶台阶,走完所有的台阶有n种走法,则存 ...
- iPhone重绘机制drawRect
如何使用iPhone进行绘图.重绘操作iPhone的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写draw ...
- 关于QStringRef
QString 为字符串操作提供了各种成员比如mid().left().right().它们都创建会一个新的字符串,因此有一个对在已存在QString的malloc和深拷贝. 与此相反,QStri ...
- 话说C语言const用法
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量. 例: void ...
- SimpleUrlHandlerMapping 处理器映射的配置--转
http://blog.csdn.net/rainier001/article/details/6860491 <?xml version="1.0" encoding=&q ...
- MVC+easyui 完整实现
学习mvc半月有余,趁几天假期,没事做就动手做一个完整的网站玩玩,顺便和上家公司的方法做个比较.页面引擎采用mvc自带的功能,建立视图,交给.net自带渲染出页面(对比:上家公司采用的第三方组件渲染的 ...
- 标签云 - jqcloud 用法
html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- iOS 中的XML解析代码(SAX)
1.XML解析(SAX) NSXMLParser SAX 大文件 1)打开文档 - (void)parserDidStartDocument:(NSXMLParser *)parser 2)开始查找起 ...
- Stream Collector
// Accumulate names into a List List<String> list = people.stream().map(Person::getName).colle ...