其他分享
首页 > 其他分享> > LeetCode70.爬楼梯

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;
    }

标签:pre,LeetCode70,台阶,int,res,爬楼梯,post,方法
来源: https://www.cnblogs.com/mx-info/p/14861302.html