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

力扣70. 爬楼梯(动态规划 Java,C++解法)

Problem: 70. 爬楼梯

文章目录

  • 题目描述
  • 思路
  • 解题方法
  • 复杂度
  • Code

题目描述

在这里插入图片描述

思路

由于本题目中第i层台阶只能由于第i- 1层台阶和第i-2层台阶走来,所以可以联想到动态规划,具体如下:

1.定义多阶段决策模型:对于每一上台阶看作一种状态;
2.定义状态转移方程:int[] dp = new int[n + 1]用于记录第i个台阶可以走到的走法;dp[i] = dp[i - 1] + dp[i - 2];

解题方法

1.定义数组int[] dp = new int[n + 1]用于记录第i个台阶可以走到的走法
2.初始化dp[1] = 1; dp[2] = 2;
3.从dp数组下标为3处开始完成动态转移方程;
4.返回dp[n]

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为台阶数

空间复杂度:

O ( n ) O(n) O(n)

Code

class Solution {/*** Dynamic programing* @param n The number of stage* @return int*/public int climbStairs(int n) {if (n <= 2) {return n;}//Record how many moves there are on step iint[] dp = new int[n + 1];dp[1] = 1;dp[2] = 2;for (int i = 3; i <= n; ++i) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
}
class Solution {
public:int climbStairs(int n) {if (n <= 2) {return n;}vector<int> dp(n + 1);dp[1] = 1;dp[2] = 2;for (int i = 3; i <= n; ++i) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
};
http://www.lryc.cn/news/284582.html

相关文章:

  • Wpf 使用 Prism 实战开发Day13
  • 62 C++ 多线程 -- mutex互斥量只能使用一次的问题分析-----以及解决方案递归mutex:recursive_mutex。
  • Chrome Devtools 调试指南
  • 【Qt5】QString的成员函数chop
  • Spring中的注解
  • JavaScript 中的事件
  • hasattr、getattr、setattr
  • 构建高可用消息队列系统 01
  • 十本你不容错过的Docker入门到精通书籍推荐
  • 【AI接口】语音版、文心一言大模型和AI绘图、图片检测API
  • VUE 中的 v-for 和 v-if 是否可以共存
  • kubernetes 权限控制
  • vue中父组件异步传值,渲染问题
  • 09前后端分离+SSM整合的小案例
  • 模仿ProTable创建ProTable组件
  • 新品发布 | 多通道总线记录仪TLog1004,是你期待的吗?
  • Double数据类型保留3位小数
  • 08- OpenCV:形态学操作(膨胀与腐蚀 、提取水平与垂直线)
  • 基于JavaWeb+SSM+Vue停车场微信小程序系统的设计和实现
  • VUE---自定义指令
  • 开发安全之:Cross-Site Scripting (XSS) 漏洞
  • 代码随想录算法训练营第二十四天| 77. 组合
  • 虚拟歌姬学习:DiffSinger,让GitHub下载快的方法!
  • What is `StringEscapeUtils.escapeHtml4` does?
  • Dubbo 的心脏:理解和应用多种协议【十三】
  • 操作系统实验报告
  • IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)
  • C和指针课后答案
  • C语言——大头记单词
  • 根据自己修改后的容器制作镜像并上传docker hub