青蛙跳台阶
思路,找出数列的规律
记忆化递归,时间复杂度O(n),空间复杂度O(n)
class Solution {
Map<Integer, Integer> map = new HashMap<>();
public int numWays(int n) {
if(n == 0 || n == 1){
return 1;
}
Integer val = map.get(n);
if(val != null){
return val;
}
int sum = (numWays(n-1) + numWays(n-2)) % 1000000007;// leetcode要求结果取模
map.put(n, sum);
return sum;
}
}
动态规划,迭代递推
class Solution {
public int numWays(int n) {
if(n == 0 || n == 1){
return 1;
}
int first = 1;
int second = 1;
int sum = 0;
while(n >= 2){
sum = (first + second) % 1000000007;
first = second;
second = sum;
n--;
}
return sum;
}
}