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

2019-01-14  本文已影响0人  myFamily329
说明:记录刷剑指offer,使用php与python两种语言,对解题思路以及涉及到的基本语法以及知识点做学习记录。其中对于每道题目进行粗略的分类。
题目来源
题目描述

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

解题思路

对于本题,每次只有1阶,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]
上一篇下一篇

猜你喜欢

热点阅读