题目描述:
有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现
一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。
测试样例1:
1
返回:
1
测试样例2:
3
返回:
4
测试样例3:
4
返回:
7
代码实现:
import java.util.*;
public class GoUpstairs {
public int countWays(int n) {
// write code here
int a1 = 1;
int a2 = 2;
int a3 = 4;
int sum = 0;
if (n<3){
return n;
}
if (n == 3){
return a3;
}
for (int i = 4;i<=n;i++){
sum = ((a1+a2)%1000000007+a3)%1000000007;
a1 = a2;
a2 = a3;
a3 = sum;
}
return sum;
}
}