当前位置: 首页 > article >正文

[LeetCode] 面试题08.01 三步问题

题目描述:

三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。

示例1:

 输入:n = 3 
 输出:4
 说明: 有四种走法

示例2:

 输入:n = 5
 输出:13

提示:

  1. n范围在[1, 1000000]之间

题目链接:

. - 力扣(LeetCode)

解题主要思路:

其实这题跟 "第N个泰波那契数" 是一类型的,动态规划即可。

  • 首先我们先理清dp[i]表示什么?dp[i]表示到达i位置时,一共有多少方式。
  • 其次我们需要理清状态转移方程,dp[i]表示dp[i]表示到达i位置时一共有多少方式,且小孩一次可以上1阶、2阶或3阶,那么我们可以理解为:

                小孩从dp[i-3]一次上3阶;

                小孩从dp[i-2]一次上2阶;

                小孩从dp[i-1]一次上1阶;

        因此状态转移方程可以表示为dp[i] = dp[i-3] + dp[i-2] + dp[i-1];不过题目说了结果可能很大,            需要对结果模1000000007,所以我们每相加一次就需要对数据取模。

  • 然后我们需要注意dp表的初始化以及边界问题,例如当i = 1时,dp[i-3]就越界了,因此当i [1,3]时我们需要单独拿出来判断。
  • 最后我们要注意dp表填表顺序以及返回值即可。

解题代码:

class Solution {
public:
    const int MOD = 1e9+7;  // 1000000007
    int waysToStep(int n) {
        // 边界情况
        if (n == 1 || n == 2) return n;
        if (n == 3) return 4;
        vector<int> dp(n+1);  // 创建dp表
        dp[1] = 1, dp[2] = 2, dp[3] = 4;  // 初始化
        for (int i = 4; i <= n; ++i)
        {   // 构建dp表
            dp[i] = ((dp[i-1] + dp[i-2]) % MOD + dp[i-3]) % MOD;
        }
        return dp[n];
    }
};


http://www.kler.cn/a/377607.html

相关文章:

  • 大型音频模型:AudioLLMs
  • 基于SpringBoot+微信小程序+协同过滤算法+二维码订单位置跟踪的农产品销售平台-新
  • 【顶刊核心变量】上市公司企业数字创新数据(数字产品、流程、业务模式创新(2001-2023年)
  • 【linux】HTTPS 协议原理
  • 像`npm i`作为`npm install`的简写一样,使用`pdm i`作为`pdm install`的简写
  • 深入理解 Spring Boot 中的 @PathVariable 注解
  • clion远程配置docker ros2
  • 3D区块多重渐变围栏
  • 【Linux】mnt命名空间-操作
  • NLP segment-20-分词开源项目介绍 HanLP 未来十年的自然语言处理
  • SpringBoot 在初始化加载无法使用@Value的时候读取配置文件教程
  • Admin.NET源码学习(5:swagger使用浅析)
  • Flutter 简述(1)
  • vue常用的修饰符有哪些
  • 外观模式及运用场景
  • Apifox 10月更新|测试步骤支持添加脚本和数据库操作、测试场景支持回收站、变量支持「秘密」类型
  • 关于安卓Handler之延时我不准时
  • Nginx 报错400 Request Header Or Cookie Too Large
  • 【MogDB】MogDB5.2.0重磅发布第九篇-SQL宽容性提升
  • npm入门教程7:npm语义化版本控制
  • Flink CDC 同步 Mysql 数据
  • 今日 AI 简报|多智能体协作平台、全能 AI 音频生成、长文本生成框架等前沿 AI 技术与应用
  • 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--接口路径管理
  • K 临近算法
  • AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
  • Nginx 深度解析:高性能 Web 服务器与反向代理的艺术