🤖
AI审核中

NC68 跳台阶

文章摘要

该题要求计算青蛙爬上 n 级台阶的跳法数,青蛙每次可跳 1 级或 2 级,跳法顺序不同视为不同。n 的取值在 1‒40,要求时间 O(n)、空间 O(1)。实际上跳法数等同斐波那契数列,第 n 项可由 dp[i]=dp[i‑1]+dp[i‑2] 递推得到。示例:n=2 时答案 2,n=7 时答案 21。文中给出一种基于数组的实现思路,亦可用常数空间的滚动变量进一步优化。

题目链接:https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4

题目描述

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

数据范围:1≤n≤40

要求:时间复杂度:O(n) ,空间复杂度: O(1)

示例 1:

输入:2
返回值:2
说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2

示例 2:

输入:7
返回值:21

解题代码

public class Solution {
    public int jumpFloor(int target) {
        int[] dp = new int[target];
        dp[0] = 1;
        if (target >= 2) {
            dp[1] = 2;
            for (int i = 2; i < target; i++) {
                dp[i] = dp[i - 1] + dp[i - 2];
            }
        }
        return dp[target - 1];
    }
}
0 条评论

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧

评论区 0

头像
 0 条评论