LeetCode70.爬楼梯

Posted mx_info

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode70.爬楼梯相关的知识,希望对你有一定的参考价值。

LeetCode70.爬楼梯

题目描述

/**
     * 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
     *
     * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
     *
     * 注意:给定 n 是一个正整数。
     */

思路分析

  1. 由题意可知,因为每次只能爬一个或者两个楼梯,所以n个台阶的总共爬行次数应该为n - 1个台阶和n - 2个台阶的爬行次数总和
  2. 因此可以考虑使用递归,但是对于n比较大的,递归会出现超时
  3. 可以使用滚动数组的思路,定义三个变量分别保存n个台阶的方法数,n - 1个台阶的方法数,n - 2个台阶的方法数,通过循环,依次重置这三个变量,实现滚动数组的思路
  4. 源码见下

源码及分析

/**
     *
     * @param n 要爬楼梯层数
     * @return 返回方法的总数
     */
    //滚动数组的方法
    public int climbStairs(int n) {
        //定义变量res保存n个台阶总共可行的方法
        //变量pre 和 post表示 n - 1个台阶和 n - 2个台阶总共可行的方法
        int pre = 0, post = 0, res = 1;
        for (int i = 0; i < n; i++) {
            pre = post;
            post = res;
            //因为每次只能走1或者2个台阶,因此n个台阶总共的方法应该为n - 1个和n - 2个台阶的方法总和
            res = pre + post;
        }
        return res;
    }

以上是关于LeetCode70.爬楼梯的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode70爬楼梯

LeetCode #70 爬楼梯

leetcode 70 爬楼梯

Leetcode#70. Climbing Stairs(爬楼梯)

LeetCode70.爬楼梯

「动态规划」LeetCode 70(爬楼梯)