LeetCode-70:Climbing Stairs

来源:互联网 发布:淘宝购买手机模板 编辑:程序博客网 时间:2024/04/29 09:36

原题描述如下:

You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

题意现有一个n个台阶的楼梯,你每次可走一步或者两步,问可以有多少种走法。

解题思路:先构造动态规划转移方程,设走n阶台阶可有f(n)中走法,假设最后走了一步,则之前有f(n-1)种走法,假设最后走了两步,则之前有f(n-2)种走法。则转移方程为f(n) = f(n-1) + f(n-2)。

Java代码:

public class Solution {
    public int climbStairs(int n) {
        if(n == 1 || n == 2)return n;
        
        int[] dp = new int[n];
        dp[0] = 1;
        dp[1] = 2;
        
        for(int i=2; i<dp.length; ++i){
            dp[i] = dp[i-1] + dp[i-2];
        }
        
        return dp[n-1];
    }
}

0 0
原创粉丝点击