美文网首页
[剑指-08](php&python):跳台阶

[剑指-08](php&python):跳台阶

作者: myFamily329 | 来源:发表于2019-01-14 19:54 被阅读0次
说明:记录刷剑指offer,使用php与python两种语言,对解题思路以及涉及到的基本语法以及知识点做学习记录。其中对于每道题目进行粗略的分类。
题目来源
题目描述

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

解题思路

对于本题,每次只有1阶,2阶两种跳法

  • 假设第一次跳的是一阶,则剩余的(n-1)阶,有f(n-1)种跳法
  • 假设第一次跳的是二阶,则剩余的(n-2)阶,有f(n-2)种跳法
  • 则通过1和2可得,有n阶跳法有: f(n) = f(n -1) + f(n -2) 种跳法
  • 通过实际情况,只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2
  • 可以发现最终得出的是一个斐波那契数列:


    斐波那契数列
编程实现
PHP
<?php
    运行时间:20ms

    占用内存:8208k
    function jumpFloor($number)
    {
        
        // write code here
        if ($number < 3){
            return $number;
        }
        $f1 = 1;
        $f2 = 2;
        for($i=3; $i <= $number; $i++){
            $temp = $f1 + $f2;
            $f1 = $f2;
            $f2 = $temp;
        }
        return $temp;
    }
?>
Python
# -*- coding:utf-8 -*-
class Solution:
    #递归的方式,此方法时间超时,时间复杂度高
    def jumpFloorI(self, number):
        if number <= 2:
            return number
        else:
            return self.jumpFloorI(number - 1) + self.jumpFloorI(number - 2)

    # 使用迭代方法 20ms
    def jumpFloorII(self, number):
        if number < 3:
            return number
        else:
            one, two = 1, 2
            for i in range(number - 2):
                one, two  = two, one + two
            return two

    # 使用数组的方式 30ms
    def jumpFloorIII(self, number):
        res = [1, 2]
        while len(res) <= number:
            res.append(res[-1] + res[-2])
        if number < 3:
            return number
        else:
            return res[number - 1]

相关文章

  • [剑指-08](php&python):跳台阶

    说明:记录刷剑指offer,使用php与python两种语言,对解题思路以及涉及到的基本语法以及知识点做学习记录。...

  • [剑指-09](php&python):变态跳台阶

    说明:记录刷剑指offer,使用php与python两种语言,对解题思路以及涉及到的基本语法以及知识点做学习记录。...

  • [剑指offer][08]跳台阶

    题目描述: · 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思...

  • 剑指offer-08-跳台阶

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

  • 剑指offer--08. 跳台阶

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

  • 【剑指Offer】08——跳台阶(递归)

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

  • 剑指 offer 笔记 08 | 跳台阶

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

  • 剑指offer 08 变态跳台阶

    题目: 思路: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) ...

  • [剑指offer] 跳台阶

    本文首发于我的个人博客:尾尾部落 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台...

  • 剑指Offer——跳台阶

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

网友评论

      本文标题:[剑指-08](php&python):跳台阶

      本文链接:https://www.haomeiwen.com/subject/honjdqtx.html