leetcode 面试题08.01. 三步问题

题目描述

三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。leetcode 面试题08.01. 三步问题_第1张图片

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/three-steps-problem-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题

动态规划问题首先就是要找到规律:

  • 第一个台阶为 0+1 一种方式
  • 第二个台阶为 1+1, 0+2 两种方式
  • 第三个台阶为1+1+1,0+2+1,0+1+2,0+3 四种方式
  • 第四个台阶为1+1+1+1,0+2+1+1, 0+1+2+1,0+3+1,1+1+2, 0+1+3, 0+2+2 七种方式,可以看出这7种方式是来自于前三种方式之和(举例:前三种都有每次上一个台阶的方式,第四个台阶也有这种方式;三个台阶的时候有0+2+1的方式,那么四个台阶的时候也可以有这种方式0+2+1+1)
class Solution {
    public int waysToStep(int n) {
        long[] dp = new long[n];

        if(n == 1){
            return 1;
        }
        if(n == 2){
            return 2;
        }
        if(n == 3){
            return 4;
        }
        dp[0] = 1;
        dp[1] = 2;
        dp[2] = 4;
        for(int i =3;i

leetcode 面试题08.01. 三步问题_第2张图片

你可能感兴趣的:(leetcode,leetcode,算法,职场和发展)