LeetCode 70. 爬楼梯 Climbing Stairs(C语言)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hang404/article/details/85321067

题目描述:

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

题目解答:

方法1:动态规划

到达位置i,可以从位置i - 1走1个台阶或者i - 2走两个台阶到达当前位置。
运行时间0ms,代码如下。

int climbStairs(int n) {
    if(n == 0 || n== 1 || n == 2)
        return n;
    int t1 = 1, t2 = 2, i = 0, t = 0;
    for(i = 2; i < n; i++) {
        t = t1 + t2;
        t1 = t2;
        t2 = t;
    }
    return t;
}

猜你喜欢

转载自blog.csdn.net/hang404/article/details/85321067