每天一题LeetCode【第51天】

T70. Climbing Stairs【Easy

题目

你要爬楼梯。你面对的是一个 n 步可以走上去的楼梯。

你每次可以走一步或者两步,那么你有几种不同的方式可以爬上去吗?

注意:给出的 n 是一个正数

思路

简单说一个例子:

走到 第53阶 可能有两种情况:
① 从 第52阶 一步走到 ② 从 第51阶 两步走到

所以 到53阶方式数 = 到52阶方式数 + 到51阶方式数


代码

代码取自 Top Solution,稍作注释

public int climbStairs(int n) {
    // 边界处理
    if(n == 0 || n == 1 || n == 2){return n;}
    // 设置一步和两步的初值
    int[] mem = new int[n];
    mem[0] = 1;
    mem[1] = 2;
    // 后一个等于前两个之和,看“思路”
    for(int i = 2; i < n; i++){
        mem[i] = mem[i-1] + mem[i-2];
    }
    return mem[n-1];
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容