首页 > 其他分享 >每日一题:Leetocde-70 爬楼梯

每日一题:Leetocde-70 爬楼梯

时间:2024-07-23 13:27:33浏览次数:21  
标签:楼顶 返回 爬楼梯 Leetocde int 到达 70 方法 public

力扣题目

解题思路

java代码

力扣题目:

假设你正在爬楼梯。需要 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 阶

解题思路:

解法思路

  • 首先,对于 n = 1 时,只有一种方法能到达,即直接一步到位,所以返回 1 。
  • 对于 n = 2 时,有两种方法,一步一步走或者一步跨两级,所以返回 2 。
  • 然后,使用动态规划的思想来解决。定义三个变量 a 、 b 和 c ,初始时 a = 1 表示到达第一级的方法数, b = 2 表示到达第二级的方法数。
  • 通过一个循环从第三级开始计算,每一级的方法数 c 等于前两级的方法数之和(即 c = a + b ),然后更新 a 和 b 的值,为下一次计算做准备。

代码执行过程
以 n = 3 为例,

  • 初始时, a = 1 , b = 2 。
  • 第一次循环, i = 3 , c = 1 + 2 = 3 ,然后 a = 2 , b = 3 。
  • 循环结束,返回 c ,即到达第三级的方法数为 3 。

这种方法的时间复杂度为 O(n) ,空间复杂度为 O(1) ,因为只使用了固定的几个变量来存储中间结果。

例如,如果 n = 4 ,计算过程如下:

  • 初始: a = 1 , b = 2 。
  • 第一轮: c = 3 , a = 2 , b = 3 。
  • 第二轮: c = 5 ,此时返回 c ,即到达第四级的方法数为 5 

java代码:

package org.example.mouth7.today23;

public class Leetcode70 {
    public static void main(String[] args) {
        System.out.println(climbStairs(3));
    }
    public static int climbStairs(int n) {
        if (n == 1) {
            return 1;
        }
        if (n == 2) {
            return 2;
        }
        int a = 1;
        int b = 2;
        int c = 0;
        for (int i = 3; i <= n; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
}

更多详细内容同步到公众号,感谢大家的支持!

每天都会给刷算法的小伙伴推送明日一题,并且没有任何收费项

标签:楼顶,返回,爬楼梯,Leetocde,int,到达,70,方法,public
From: https://blog.csdn.net/LIUCHANGSHUO/article/details/140624886

相关文章

  • 代码随想录算法训练营第一天leetcode704二分查找27移除元素
    leetcode704,这是leetcode提交四次后通过的结果:classSolution{  publicintsearch(int[]nums,inttarget){    if(nums.length==1&&nums[0]==target)      return 0;    if(nums.length==2)      if(nums[0]==target)......
  • 等保测评与ISO27001认证的区别全解析
    等保测评与ISO27001认证的区别全解析问题:等保测评与ISO27001认证有什么区别?回答:等保测评和ISO27001认证都是信息安全领域的重要标准,但它们在适用范围、标准要求、实施流程等方面存在显著差异。以下是详细解析:1.适用范围等保测评(信息安全等级保护):适用对象:主要适用于......
  • LeetCode 3070. 元素和小于等于 k 的子矩阵的数目
    3070.元素和小于等于k的子矩阵的数目给你一个下标从 0 开始的整数矩阵 grid 和一个整数 k。返回包含 grid 左上角元素、元素和小于或等于 k 的 子矩阵 的数目。示例1:输入:grid=[[7,6,3],[6,6,1]],k=18输出:4解释:如上图所示,只有4个子矩阵满足:包含g......
  • P2704 [NOI2001] 炮兵阵地
    原题链接题解经典的状压dpcode#include<bits/stdc++.h>#definelllonglong#definelowbit(x)((x)&(-x))usingnamespacestd;intsit[105];intdp[505][505][4];boolcheck(intx){intx1=(x>>1)>>1;intx2=(x<<1)<<1;......
  • LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡
    搬迁说明之前在CSDN上发文章,一直想着努力发一些好的文章出来!这篇文章在2024-04-1710:11:55已在CSDN发布写在前面其他显卡环境也可以!但是最少要有8GB的显存,不然很容易爆。如果有多显卡的话,单机多卡也是很好的方案!!!背景介绍目前借到一台算法组的服务器,我们可以查看一下......
  • 代码随想录算法训练营第35天 | 动态规划1:509.斐波那契数、70.爬楼梯、746.使用最小花
    代码随想录算法训练营第35天|动态规划理论基础https://programmercarl.com/动态规划理论基础.html#算法公开课509.斐波那契数https://leetcode.cn/problems/fibonacci-number/submissions/548309803/代码随想录https://programmercarl.com/0509.斐波那契数.html#算法公开......
  • 解决.Net Framework3.5安装报错0x80070490
    .NETFramework是Windows平台下的软件框架,包括1.0~4.8多个版本,向下兼容。Win7默认安装的是3.5版,早期Win10版本默认安装的4.6版,本文分享如何在Win10和Win11上离线安装.NETFramework3.5,并解决安装报0x80070490找不到元素的错误。问题描述在早些年,有的软件安装时强制验证.NETFr......
  • 算法第十一天:leetcode707.设计链表
    一、设计链表的题目描述与链接  707.设计链表的链接如下表所示,您可直接复制下面网址进入力扣学习,在观看下面的内容之前一定要先做一遍哦,这样才能印象深刻!https://leetcode.cn/problems/design-linked-list/https://leetcode.cn/problems/design-linked-list/题目描述:你......
  • 【代码随想录训练营第42期 Day3打卡 LeetCode 203.移除链表元素,707.设计链表,206.反转
    一、做题感受今天是打卡的第三天,前两天题目主要考察数组相关知识,现在已经来到了链表的学习。题目共有三道,都是以考察单链表为主,整体来说难度不大,但是思路很灵活,尤其是反转链表的考察,双指针的新用法。今天做题总体感觉不错,能有自己的思考和理解。二、链表相关知识1.常见链表......
  • CMP-7000A - Applications Programming
    Module: CMP-7000A- Applications ProgrammingAssignment: R002-Game Coding and Testing PresentationLearningoutcomes•    Youwilldemonstratecompetence in using Pythonprogrammingskills by creatingandcodingyourown personalgameappl......