博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——跳台阶&&变态跳台阶&&矩形覆盖
阅读量:2254 次
发布时间:2019-05-09

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

剑指offer——跳台阶&&变态跳台阶&&矩形覆盖

1.跳台阶

哈哈哈,递归题,一遍过

class Solution {public:    int jumpFloor(int number) {        if(number==1)             return 1;        else if(number==2)             return 2;        else {            return jumpFloor(number-1)+jumpFloor(number-2);        }    }};

2.变态跳台阶

复杂度这么高竟然也可以AC,666

Solution1:

class Solution {public:    int jumpFloorII(int number) {        if(number==1)            return 1;        else if(number==2)            return 2;        else{            int all=0;            while(number>=2)                all+=jumpFloorII(--number);            return all+1;//考虑到从第0层直接跳到第n层的情况,故应该+1        }    }};

Solution2:参考网址

因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级
跳1级,剩下n-1级,则剩下跳法是f(n-1)
跳2级,剩下n-2级,则剩下跳法是f(n-2)
所以f(n)=f(n-1)+f(n-2)+…+f(1)
因为f(n-1)=f(n-2)+f(n-3)+…+f(1)
所以f(n)=2*f(n-1)

return  1<<--number;

后的数学规律才是真牛逼啊

3.矩形覆盖

本质上还是斐波那契额数列,但稍有不同。一开始竟然没看出来。。

class Solution {public:    int rectCover(int number) {        int f=1,g=2;        if(number==0)            return 0;        else if(number==1)             return f;        else if(number==2)            return g;        while(1<--number){            g=g+f;            f=g-f;        }        return g;    }};

转载地址:http://mthdb.baihongyu.com/

你可能感兴趣的文章
经典排序算法——归并排序
查看>>
经典排序算法——冒泡法排序
查看>>
java基础——类加载器
查看>>
java 基础——泛型
查看>>
java 集合———List 实现类之 ArrayList、LinkedList
查看>>
java 集合———HashMap 集合的三种迭代方式
查看>>
java 集合—— Map 实现类之 LinkedHashMap
查看>>
UE4(虚幻4)基础:免费资源下载(材质/动作/模型/环境/效果/插件)
查看>>
UE4(虚幻4)基础:人物/动画导入与角色蓝图
查看>>
C++各容器特性总结
查看>>
C++人该知道的N个问题与做法:确保对象被使用前已先初始化
查看>>
排序算法--计数排序--详解实例与代码
查看>>
网络基础--学网络该学什么?(简单介绍 )
查看>>
设计模式--策略模式示例代码
查看>>
设计模式--命令模式示例代码
查看>>
生产服务器上安装Python
查看>>
centos--软件源--本地软件源---离线安装
查看>>
vue入门学习笔记
查看>>
MySQL数据库优化
查看>>
DataWorks(数据工场)
查看>>