zoukankan      html  css  js  c++  java
  • 【剑指offer】02-青蛙跳台阶

    题目:

      一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。



    思考:
      n = 1, 1 ---1种
      n = 2, 1+1 2 ---2种
      n = 3, 1+1+1 1+2, 2+1 ---3种
      n = 4, 1+1+1+1
          1+1+2, 1+2+1, 2+1+1
          2+2 ---5种
      n = 5, 1+1+1+1+1
          1+1+1+2 *4
          1+2+2 *3 ---8种
      n随便为多少,都有一个全1的情况。然后剩下的可两两1结合,分奇偶?
      
      醉了,这还在用数学的方式思考!!!傻子!!要变换思维了啊!!

    重新思考(参考了书):
      n > 2的时候,第一次跳可选择跳1级,或者2级。
      跳1级:那剩下的n-1级台阶,就是f(n-1)种跳法
      跳2级:那剩下的n-2级台阶,就是f(n-2)种跳法
      -> f(n) = f(n-1) + f(n-2)
      -> 斐波那契!!!!
    class Solution:
        def jumpFloor(self, number):
            first = 1
            second = 2
            num = 0
            if number == 1:
                return 1
            elif number == 2:
                return 2
            else:
                for i in range(2, number):
                    num = first + second
                    first = second
                    second = num
                return num
  • 相关阅读:
    对象的创建过程以及super关键字的使用
    Java语言基础
    数据结构-思考总结
    ssh简化登录
    WebStorm设置eslint保存自动格式化
    Jmeter简单使用
    nodemon添加babel支持
    VueCli 添加自定义组件报错
    shell写一个压测脚本
    Vue v-for指令中 key 的必要性
  • 原文地址:https://www.cnblogs.com/RebeccaG/p/11922568.html
Copyright © 2011-2022 走看看