剑指offer-8.跳台阶
来源:互联网 发布:淘宝电动清扫车多少钱 编辑:程序博客网 时间:2024/05/20 17:07
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:斐波那契数列的变种,为什么是斐波那契数列的变种?首先我们认为台阶数为N的时候的总数是F(N),而那么根据组合数学里的加法原理,
我把此题分为两类,第一类就是小青蛙第一次跳了
1
个台阶,那么剩下的
就是F(N-
1
)种,第二种就是小青蛙第一次跳了
2
个台阶,好神奇哟,那么
剩下的就是F(N-
2
)种,因此加法原理告诉我们,F(N)=F(N-
1
)+F(N-
2
),可
不就是斐波那契数列的变种嘛,知道这个了,可以利用递归或
for
循环即
可求解。递归版容易想到,而且代码很少,但是递归不好的地方就是时间复杂度很大。
递归版:
class Solution {public: int jumpFloor(int number) { if(number <= 0) return 0; else if(number == 1) return 1; else if(number == 2) return 2; else return jumpFloor(number-1) + jumpFloor(number-2); }};
迭代版:
class Solution {public: int jumpFloor(int number) { int fn = 0; int f1 = 1; int f2 = 2; if (number == 1 || number == 2) return number; for (int i = 3; i <= number; i++) { fn = f1 + f2; f1 = f2; f2 = fn; } return fn; }};
0 0
- 剑指offer-8.跳台阶
- 剑指Offer--8.跳台阶
- [剑指Offer] 8.跳台阶
- 剑指offer-跳台阶
- 【剑指offer】跳台阶
- 剑指offer--跳台阶
- 《剑指offer》跳台阶
- 剑指Offer-跳台阶
- 《剑指offer》跳台阶
- 剑指 offer:跳台阶
- 【剑指Offer】跳台阶
- 剑指offer 跳台阶
- 剑指offer--跳台阶
- 剑指offer 跳台阶
- 《剑指offer》跳台阶
- 剑指offer-跳台阶
- 剑指offer----跳台阶
- 剑指Offer:跳台阶
- 大话设计模式读书笔记(十七) 桥接模式
- 画出使用分类器得到的决策边界
- 面向接口编程详解
- [BZOJ4551][Tjoi2016&Heoi2016]树(dfs序+线段树)
- 简单工厂模式
- 剑指offer-8.跳台阶
- 关于Python error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27
- ZOJ
- caffe+unbuntu14.04+GPU运行srcnn
- 下拉刷新 上拉加载
- FastDFS搭建
- Makefile经典教程(掌握这些足够)
- android高仿微信表情输入与键盘输入(详细实现分析)
- JavaScript学习-Text类型