leetcode算法70.爬楼梯

简介: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?本文带大家解决这个问题。

一、leetcode算法



1、爬楼梯


1.1、题目


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


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


示例 1:


输入:n = 2

输出:2

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


1 阶 + 1 阶

2 阶

示例 2:

输入:n = 3

输出:3

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


1 阶 + 1 阶 + 1 阶

1 阶 + 2 阶

2 阶 + 1 阶


1.2、思路


思路一:本题是一道经典的算法题,爬楼梯的问题和我们的生活息息相关,我们几乎每天都需要爬楼梯,我们有时会一阶一阶的上,有时赶时间我们会两阶两阶的蹭蹭的上,有时候累了会两阶一阶交叉着上,那么固定的楼梯阶层数我们一共有几种上楼的方式呢?


我们拿到问题以后如果没有思路可以先找找规律,犹如我们数学中给你几个数或者几个图形让你找规律一样,这个时候我们从1阶楼梯开始找共有几种方式,我们发现,1阶楼梯有一种上楼方式,2阶楼梯有两种上楼方式,3阶楼梯有3种上楼方式,4阶楼梯有5中上楼方式,我们这里可以发现每x阶层的上楼方式等于x-1层和x-2层上楼方式的和,这个时候我们就可以根据这种规律来写代码了。


1.3、答案


18.png


class Solution {
    public int climbStairs(int n) {
        int p = 0, q = 0, r = 1;
        for(int i = 1; i <= n; i++){
            p = q;
            q = r;
            r = p + q;
        }
        return r;
    }
}


复杂度分析


时间复杂度:循环执行 n 次,每次花费常数的时间代价,故渐进时间复杂度为 O(n)。


空间复杂度:这里只用了常数个变量作为辅助空间,故渐进空间复杂度为 O(1)。

相关文章
|
2月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
46 0
|
1月前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
2月前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
35 2
|
4月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
82 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
4月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
57 6
|
4月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
79 2
|
4月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
54 1
|
4月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
68 1
|
4月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
84 0
|
4月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
45 0