zoukankan      html  css  js  c++  java
  • [LeetCode] 70. Climbing Stairs(斐波那契数列)

    【思路】

    a.因为两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); 
    b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2) 
    c.由a、b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) 
    d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2 
    e.可以发现最终得出的是一个斐波那契数列。

    由于直接用递归会超时,于是用数组来存储每一个位置的走法数目。代码如下:

     1 class Solution {
     2 public:
     3     int climbStairs(int n) {
     4         if(n == 0 || n == 1 || n == 2)
     5             return n;
     6         int *res = new int[n + 1];
     7         res[1] = 1;     //有1级台阶时
     8         res[2] = 2;     //有2级台阶时
     9         for(int i = 3;i <= n;i ++)
    10         {
    11             res[i] = res[i - 1] + res[i - 2];
    12         }
    13         return res[n];
    14     }
    15 };
  • 相关阅读:
    监控JVM回收
    linux JDK安装
    linux 免登陆设置
    搭建redis集群总结
    redis开启持久化
    搭建redis主从复制,遇到的问题总结
    Redis配置参数说明
    模板模式
    观察者模式
    适配器模式
  • 原文地址:https://www.cnblogs.com/lca1826/p/6412182.html
Copyright © 2011-2022 走看看