zoukankan      html  css  js  c++  java
  • 跳台阶

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

    思路

    递归重复子分支和函数栈调用影响效率。
    计算前6项观察规律:0:0,1:1,2:2,3:3,4:5,5:8
    数列呈斐波那契数列规律。

    最终解是由前面的解累积而成:
    若楼梯阶级 n = n
    跳 2 步到 n:剩下的是第 n - 2 步没跳,起始跳到第 n - 2 步设它为 pre2 种
    跳 1 步到 n:剩下的是第 n - 1 步没跳,起始跳到第 n - 1 步设它为 pre1 种
    dp(i) = dp(i-2) + dp(i-1)
    时间复杂度O(n),空间复杂度O(1)。

    递归代码

    public class Solution {
        public int JumpFloor(int target) {
            if(target < 0)    return 0;
            if(target == 0)   return 1;
            return JumpFloor(target-1) + JumpFloor(target-2);
        }
    }
    

    斐波那契循环

    public class Solution {
        public int JumpFloor(int target) {
            if(target < 3)    return target;
            int f1 = 1, f2 = 2, tmp = 0;
            for(int i = 2; i < target; i++) {
                tmp = f1 + f2;
                f1 = f2;
                f2 = tmp;
            }
            return f2;
        }
    }
    
  • 相关阅读:
    waitkey();
    一、数组--删除排序数组中的重复项
    core组件进阶
    opencv数据结构与基本绘图
    highGUI图形用户界面
    合并两个有序链表
    字符串
    内存
    9位运算
    8设备文件
  • 原文地址:https://www.cnblogs.com/ustca/p/12315760.html
Copyright © 2011-2022 走看看