可视化图解算法73:跳台阶(爬楼梯)

1.题目

描述

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

数据范围:1 ≤n≤40

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

示例1

输入:

2

返回值:

2

说明:

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

示例2

输入:

7

返回值:

21

2. 题解思路

本题的关键是套用动态规划的模板,对问题进行拆解。

具体思路是:

如果文字描述的不太清楚,你可以参考视频的详细讲解。

3.编码实现

核心代码:

Go 复制代码
func jumpFloor(number int) int {
	if number == 1 {
		return 1
	}
	//1.定义状态.	i:第i个台阶; dp[i]:跳到第i个台阶的跳法
	dp := make([]int, number+1)
	//2.初始化边界条件:	dp[1]=1,即第一个台阶只有1种跳法;dp[2]=2,即第二个台阶有2种跳法;
	dp[1] = 1
	dp[2] = 2
	//3.确定递推公式: dp[i]=dp[i-1]+dp[i-2]
	for i := 3; i <= number; i++ {
		//到第i个台阶有2种方法:从第 i-1跳上来,或者从第 i-2跳上来
		dp[i] = dp[i-1] + dp[i-2]
	}
	//4.输出结果
	return dp[number]
}

具体完整代码你可以参考下面视频的详细讲解。

4.总结

本题是动态规划的经典题目,重点在于理解动态规划的解题思路。对于第i个台阶,只能从i-1或者i-2个台阶跳上来,因此递推公式是:dp[i] = dp[i - 1] + dp[i - 2]。

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

✅ 链表

✅ 二叉树

✅ 二分查找、排序

✅ 堆、栈、队列

✅ 回溯算法

✅ 哈希算法

✅ 动态规划

无论你是备战笔试面试 、提升代码效率 ,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:燕赵多佳人,美者颜如玉。

相关推荐
txzrxz1 天前
动态规划——背包问题
算法·动态规划
Yingye Zhu(HPXXZYY)1 天前
洛谷 P15553 [CCPC 2025 哈尔滨站] 液压机
算法
谭欣辰1 天前
LCS(最长公共子序列)详解
开发语言·c++·算法
m0_629494731 天前
LeetCode 热题 100-----17.缺失的第一个正数
数据结构·算法·leetcode
Cando学算法1 天前
鸽笼原理(抽屉原理)
c++·算法·学习方法
Tisfy1 天前
LeetCode 0796.旋转字符串:暴力模拟
算法·leetcode·题解·模拟·字符串匹配
BlockChain8881 天前
AI+区块链深度探索:算法与账本的共生时代
人工智能·算法·区块链
生成论实验室1 天前
《源·觉·知·行·事·物:生成论视域下的统一认知语法》第一章 源:不可言说的生成之源
人工智能·科技·算法·生活·创业创新
2zcode1 天前
基于低光照增强与轻量型CNN道路实时识别算法研究(UI界面+数据集+训练代码)
人工智能·算法·cnn·低光照增强·自动驾驶技术
hnjzsyjyj1 天前
洛谷 P1443:马的遍历 ← BFS
数据结构·bfs