• 微软算法100题27 跳台阶问题


    27.跳台阶问题
    题目:一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。
    求总共有多少总跳法,并分析算法的时间复杂度

    思路:通过数学归纳法 

    n=1 1

    n=2 2

    n=3 3

    n=4 5

    n=5 8

    可知n>=3时 f(n)=f(n-1)+f(n-2) 是一个斐波那契数列, 该问题的时间复杂度也就是求斐波那契数列第N项的时间复杂度

    n=3时需要计算2次, n=4时需要计算3次,n=5时需要计算5次,求斐波那契第N项的时间复杂度也是一个斐波那契数列,即O(n)=O(fib(n))

     1 package com.rui.microsoft;
     2 
     3 public class Test27_JumpStairs {
     4 
     5     public static void main(String[] args) {
     6         int total = jump(6);
     7         System.out.println(total);
     8     }
     9     
    10     public static int jump(int n){
    11         if(n <= 0) return 0;
    12         else if (n == 1) return 1;
    13         else if (n == 2) return 2;
    14         else{
    15             return jump(n-1) + jump(n-2);
    16         }
    17     }
    18 }
  • 相关阅读:
    130被围绕的区域
    695岛屿的最大面积
    200岛屿数量
    5314跳跃游戏IV
    375猜数字大小II
    464我能赢吗
    486预测赢家
    877石子游戏
    1000合并石头的最低成本
    5329数组大小减半
  • 原文地址:https://www.cnblogs.com/aalex/p/4911254.html
Copyright © 2020-2023  润新知