LeetCode 爬楼梯

假设你正在爬楼梯。需要 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 阶
解法一:

可以这样想,n 个台阶,一次可以爬 1 步,也可以爬 2 步,那么 n 个台阶的爬楼方法就等于一开始爬 1 步的方法数 + 一开始爬 2 步的方法数,这样我们就只需要计算 n-1 个台阶的方法数 和 n-2 个台阶方法数,得出动态规划方程 f(n) = f(n-1) + f(n-2)。

    public int climbStairs(int n) {

        if (n == 1 || n == 2) {
            return n;
        }

        int[] dp = new int[n + 10];
        
        dp[1] = 1;
        dp[2] = 2;

        for (int i = 3; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }

        return dp[n];
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 这段时间,陆远总是会接到莫名其妙的陌生电话,电话里他被误认作一个名叫“赵川”的人,虽然解释了很多次,但对方还是...
    30sToMars阅读 2,976评论 0 0
  • 昨天的顺产日记一出,所有还未经历的朋友纷纷表示好恐惧,其实我想说,对于生孩子,我早就已经好了伤疤忘了痛,现在只能把...
    我是小曼曼阅读 4,755评论 0 0
  • 提出这个问题,我想绝大部分人的答案是:吃喝玩乐! 是的,吃喝玩乐。我还想加一个字是:吃喝玩乐累! 大概有十来年了,...
    微语素心阅读 1,715评论 3 1
  • 泳才阅读 1,324评论 0 0
  • 既然是人,生老病死,就注定脱不开了。 除了自己生病外,我印象比较深刻的还有三个人生病,我生命中至关重要的三个人...
    谷乘风阅读 1,733评论 0 0

友情链接更多精彩内容