LeetCode刷题——递归、动态规划(1)

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例 1:输入:n = 2 输出:2
示例 2:输入:n = 7 输出:21

class Solution {
  	int[] dy;
	int mod = 1000000007;

	public int numWays(int n) {
		dy = new int[n];
		Arrays.fill(dy, -1);
		int sum = 0;
		sum = DFS(n, 1);
		return sum;
	}

	public int DFS(int n, int level) {
		if (level >= n) {
			return 1;
		} else {
			if (dy[level] != -1) {
				return dy[level];
			} else {
				dy[level] = DFS(n, level + 1) % mod + DFS(n, level + 2) % mod;
				return dy[level] % mod;

			}
		}
	}
}

 

你可能感兴趣的:(LeetCode刷题——递归、动态规划(1))