LeetCode-面试题08.01 三步问题 C/C++实现 超详细思路及过程[E]

在这里插入图片描述

🎈归属专栏:深夜咖啡配算法
🚗个人主页:Jammingpro
🐟记录一句:摆了一个周末了,不能摆了,努力起来!!

文章目录

  • LeetCode-面试题08.01 三步问题
    • 🚗题目
      • 🚆题目描述
      • 🚆题目示例
      • 🚆提示
    • 🚗题解
      • 🚆动态规划法

LeetCode-面试题08.01 三步问题

标签:动态规划、记忆化搜索、数学


🚗题目

🚆题目描述

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

🚆题目示例

示例 1:

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

示例 2:

输入:n = 5
输出:13

🚆提示

n范围在[1, 1000000]之间


🚗题解

🚆动态规划法

这一题与70.爬楼梯问题类似【传送门】,当我要爬到第n个台阶时,我可以是从n-1号台阶爬1个台阶后到达,可以是从n-2号台阶爬2个台阶后到达,还可以是从n-3号台阶爬3个台阶后到达。因而,可以得到递推公式 T n T_{n} Tn= T n − 3 T_{n-3} Tn3+ T n − 2 T_{n-2} Tn2+ T n − 3 T_{n-3} Tn3。从题意可知, T 0 T_{0} T0=1, T 1 T_{1} T1=1, T 2 T_{2} T2=2。得到初始化的几个数值及递推公式,我们就可以实现代码了👇

class Solution {
public:int waysToStep(int n) {const int MOD = 1000000007;if(n == 0 || n == 1) return 1;if(n == 2) return 2;int t0 = 1, t1 = 1, t2 = 2;for(int i = 3; i <= n; i++){int tmp = ((t0 + t1) % MOD + t2) % MOD;t0 = t1;t1 = t2;t2 = tmp;}return t2;}
};

文章结语:这道题是一道简单题,算是动态规划入门类题目了!!
🎈欢迎进入深夜咖啡配算法专栏,查看更多文章。
如果上述内容有任何问题,欢迎在下方留言区指正b( ̄▽ ̄)d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/226445.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)

本期文章&#xff0c;我们将通过三个动手实验从浅到深地解读和演示大语言模型&#xff08;LLMs&#xff09;&#xff0c;如何结合 Amazon SageMaker 的模型部署、模型编译优化、模型分布式训练等。 实验一&#xff1a;使用 Amazon SageMaker 构建基于开源 GPT-J 模型的对话机器…

Vue3的项目创建到启动

Vue3的项目创建 检查node版本创建 npm init vuelatest 安装依赖 项目启动 启动成功

初识《树》

目录 前言&#xff1a; 树的概念及结构&#xff1a; 1.概念 2.结构 3.树的相关概念 4.树的表示 5.树的实际应用 二叉树的概念及结构&#xff1a; 1.概念 2.特殊二叉树 ​编辑 3.二叉树的性质 对于满二叉树 对于完全二叉树&#xff1a; 4.二叉树的存储结构 堆 …

从零带你底层实现unordered_map (2)

&#x1f4af; 博客内容&#xff1a;从零带你实现unordered_map &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准C后端工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家…

webgoat-Cross Site Scripting XSS 跨站脚本攻击

01 概念 本节课讲述了什么是XSS&#xff0c;并使用XSS执行那些非开发者本意的任务。 目标 了解什么是XSS&#xff0c;XSS如何工作&#xff1f; 学习反射型XSS及注入&#xff0c;基于DOM的XSS注入 02 What is XSS? Cross-Site Scripting也叫XSS是一种漏洞&#xff0c;允许…

Pytorch-gpu环境篇

最最最头疼的就是配环境了 包之间的版本匹配问题 INSTALLING PREVIOUS VERSIONS OF PYTORCH 要考虑到pytorch和torchvision之间的匹配关系 显卡版本匹配问题

一篇博客带你了解TCP网络传输协议

Transmission Control Protocol&#xff08;TCP&#xff0c;传输控制协议&#xff09;是互联网协议套件中的一种主要协议之一&#xff0c;负责在网络上可靠地传输数据。下面是TCP协议的详细讲解&#xff1a; 1. 基本概念&#xff1a; 面向连接&#xff1a; TCP是一种面向连接的…

四、防火墙-NAT Server

学习防火墙之前&#xff0c;对路由交换应要有一定的认识 NAT Server1.1.基本原理1.2.多出口场景下的NAT Server1.3.源进源出 —————————————————————————————————————————————————— NAT Server 一般对用户提供一些可访问的…

[栈溢出+参数跟踪] [ZJCTF 2019]Login

题目来源 buuctf——[ZJCTF 2019]Login 本题主要考察参数溯源的能力。 参考链接 https://zhuanlan.zhihu.com/p/570607303 题目信息 64位&#xff0c;ubuntu16&#xff0c;开了金丝雀 C风格的代码&#xff0c;并且将admin登录信息写入代码中。 溢出点不在这里&#xff0c;但是…

将本地项目上传到gitee

本文详细介绍如何将本地项目上传到gitee 1.登录gitee创建一个与本地项目名相同的仓库 2.进入本地项目所在路径&#xff0c;打开Git Bash 3.执行初始化命令 git init4.添加远程仓库 4.1 点击复制你的HTTPS仓库路径 4.2 执行添加远程仓库命令 git remote add origin 你的…

金山办公前端二面

1. react 和 vue的区别 还有jquery&#xff1f; &#xff08;1&#xff09; jquery 和 vue、react 的区别&#xff1a; vue 和 react : 数据和视图分离 以数据驱动视图&#xff0c;只关心数据变化 dom 操作被封装&#xff08;数据驱动&#xff09; jquery&#xff1a;依靠 do…

Sass基础知识详细讲解【附带表图】

文章目录 前言使用 SassRack / Rails / Merb插件缓存选项语法选择编码 Sass CSS扩展Sass 注释输出 Sass 脚本Sass -规则和指令Sass 控制指令和表达式 Sass 混入指令Sass 功能指令命名约定Sass 输出样式:nested:expanded:compact:compressedSass 扩展缓存存储自定义导入 后言 前…