C++ 之LeetCode刷题记录(十三)

😄😊😆😃😄😊😆😃

开始cpp刷题之旅。

依旧是追求耗时0s的一天。

70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2

输出:2

解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶
    示例 2:

输入:n = 3

输出:3

解释:有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶

  2. 1 阶 + 2 阶

  3. 2 阶 + 1 阶

解法:这题刚开始比较难理解,但是理解后回头看还是比较简单的。

注意这个条件 :每次你可以爬 1 或 2 个台阶,也就是说只能前进一个或两个楼梯。

我们可以用高中时期的数学归纳法来验证这题,当n=1和2时,结果为自身,n=3时,结果为3,也就是1+2。

当我们来到n=n时,我们有几种可能从前面迈到这个n阶呢,答案是两种,因为我只可以爬一或两个台阶。

当我爬1个台阶,我是从n-1上迈上来的,当n=2时,我是从n-2上迈上来的。

也就是说我到n个台阶的可能性= 到n-1个台阶可能性+到n-2个台阶的可能性。

看到这个有没有想到斐波那契数列。

f(n)=f(n-1)+f(n-2);

我们只需要利用这个公式,就可以得到解法了。

看代码:

cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        vector<int> dp(n+1,0);   //定义n+1个,是考虑当n=1时的情况。
        dp[0]=1;
        dp[1]=2;
        for(int i=2;i<=n-1;i++){
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n-1];
    }
};

看一下提交记录:

OK,perfect。

相关推荐
懂点Tech27 分钟前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
云和数据.ChenGuang1 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
美狐美颜SDK开放平台2 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq04242 小时前
C++小案例 - 日志实战
开发语言·c++
星夜离尘562 小时前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
码匠许师傅2 小时前
【C++三方组件】Qt 概览:桌面 C++ 的事实标准与许可证三轨
开发语言·c++·qt
码匠许师傅3 小时前
【C++三方组件】POCO:跨平台系统编程全家桶
开发语言·c++
bkspiderx4 小时前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信
小王C语言4 小时前
Qt常用控件:输入类控件,单行/多行输入框、下拉框、(日期)微调框、旋钮、滑动条
开发语言·qt
ESDWAN4 小时前
SD-WAN 主备切换为什么仍然会断网?从检测机制到会话恢复分析
开发语言·php