zoukankan      html  css  js  c++  java
  • LeetCode-70-爬楼梯

    LeetCode-70-爬楼梯

    题目

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

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

    注意:给定 n 是一个正整数。

    示例 1:
    ​
    输入: 2
    输出: 2
    解释: 有两种方法可以爬到楼顶。
    1.  1 阶 + 1 阶
    2.  2 阶
    ​
    示例 2:
    ​
    输入: 3
    输出: 3
    解释: 有三种方法可以爬到楼顶。
    1.  1 阶 + 1 阶 + 1 阶
    2.  1 阶 + 2 阶
    3.  2 阶 + 1 阶
    

    思路解析

    最近都在刷动态规划的题,这种经典问题不容错过;

    按照动态规划的思想,到达第i个台阶的只能从i-1个台阶或i-2个台阶出发,故设定状态转移方程:

    [dp[i]=dp[i-1]+dp[i-2] ]

    其实本质上就是斐波那契数列,轻松解决,还获得双100,开心:)

    执行结果:
    ​
    通过
    ​
    执行用时 :0 ms, 在所有 C++ 提交中击败了100.00% 的用户
    ​
    内存消耗 :6.1 MB, 在所有 C++ 提交中击败了100.00%的用户
    

    代码

    class Solution {
    public:
        int climbStairs(int n) {
            if (n <= 3)
                return n;
            int pre=1, now=2, res=0;
            for (int i=3; i<n+1; i++)
            {
                res = pre+now;
                pre = now;
                now = res;
            }
            return res;
        }
    };
    
  • 相关阅读:
    LeetCode 面试题 08.02. 迷路的机器人
    LeetCode 96. 不同的二叉搜索树
    LeetCode 198 打家劫舍
    LeetCode 931 下降路径最小和
    Anaconda的安装及使用教程
    2020-8
    gdb与core dump
    实用linux命令
    offer_JZ25
    javaweb学习笔记整理补课
  • 原文地址:https://www.cnblogs.com/sakurapiggy/p/13021067.html
Copyright © 2011-2022 走看看