70. 爬楼梯 --力扣 --JAVA

题目

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

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

解题思路

  1. 通过对爬楼梯进行分解,爬到当前台阶的方式分为两种,即由上一个台阶通过爬1和上两个台阶爬2,同公式表示为:f(n) = f(n - 1) + f(n - 2);
  2. 通过递归进行爬楼(可能会重复计算导致超时);
  3. 寻找容器存储递归过的值或通过for循环进行有次数的累加。

代码展示

class Solution {
    public int climbStairs(int n) {
        if(n == 1){
            return 1;
        }
        if(n == 2){
            return 2;
        }
        int first = 1;
        int second = 2;
        int ans = 0;
        for (int i = 2; i < n; i++){
            ans = first + second;
            first = second;
            second = ans;
        }
        return ans;
    }
}

你可能感兴趣的:(力扣练习,算法,数据结构)