【剑指offer】面试题:跳台阶
来源:互联网 发布:单片机电子时钟原理图 编辑:程序博客网 时间:2024/05/21 17:21
完整代码地址
完整代码地址
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
很明显的求斐波那契数列类型的题目
当跳n级台阶的时候,设跳法有f(n)种
青蛙的第一步,可以跳1级,也可以跳2级(只有这两种选择)
1. 当跳1级的时候,剩下的有f(n-1)种
2. 当跳2级的时候,剩下的有f(n-2)种
so, f(0) = 0, f(1) = 1, f(2) = 2, f(n) = f(n-1) + f(n-2)
代码
public static int JumpFloor(int target) { if(target <= 0) return 0; if(target <= 2) return target; int min = 1; int max = 2; int fib = 0; for(int i = 3; i <= target; ++i) { fib = min + max; min = max; max = fib; } return fib;}
测试
public static void main(String[] args) { test1(); test2(); test3();}/** * 功能测试 */private static void test1() { for(int i = 1; i <= 10; ++i) { System.out.print(_999_JumpFloor.JumpFloor(i) + " "); } System.out.println(); System.out.println();}/** * 性能测试 */private static void test2() { int i = _999_JumpFloor.JumpFloor(20); System.out.println(i); i = _999_JumpFloor.JumpFloor(40); System.out.println(i); System.out.println();}/** * 极端测试 */private static void test3() { int i = _999_JumpFloor.JumpFloor(-5); System.out.println(i); i = _999_JumpFloor.JumpFloor(0); System.out.println(i); System.out.println();}
阅读全文
0 0
- 剑指offer面试题之跳台阶
- 【剑指offer】面试题:跳台阶
- 【剑指offer】面试题:变态跳台阶
- 【剑指Offer面试题】 九度OJ1388:跳台阶
- 【剑指Offer面试题】 九度OJ1389:变态跳台阶
- 剑指offer面试题之变态跳台阶
- 剑指offer之面试题9-2:跳台阶
- 剑指offer之面试题9-3:变态跳台阶
- 剑指offer面试题[9-1]-跳台阶
- 剑指offer面试题[9-2]-变态跳台阶
- 剑指offer 面试题9 斐波那契数列/青蛙跳台阶/矩形覆盖/变态跳台阶
- 跳台阶面试题
- 九度OJ1389剑指offer面试题9变形:变态跳台阶
- 剑指offer面试题9-青蛙跳台阶及其变种问题
- 【面试题】剑指Offer-9-斐波那契数列&&青蛙跳台阶
- 剑指offer面试题9 斐波那契数列及青蛙跳台阶问题
- 剑指offer-跳台阶
- 【剑指offer】跳台阶
- java继承
- Hibernate遇到的问题
- Visual Studio(VS2017)配置C/C++-PostgreSQL(9.6.3)完整开发环境
- [cv] Image Convolution and Edge Detection (2nd)
- 问题解决 错误 LNK2001 无法解析的外部符号 "public: __cdecl CvANN_MLP_TrainParams::~CvA
- 【剑指offer】面试题:跳台阶
- Android SQLite数据库
- 天梯赛-L1-009-N个数求和
- React native自定义组件之Button按钮
- A
- Struts
- nginx+vue.js实现前后端分离
- TCP三次握手四次挥手
- 暑假测试 Day 6