(仅提供思路,代码超时了,看看有没有人能帮忙优化一下,谢谢)
- 当前所在层的点的个数 = 上一层的点的个数 + 当前的层数
- 截至当前层的所有点的个数 = 截至上一层的所有点的个数 + 当前所在层的点的个数
有点绕,可以自己画一个表格。横坐标表示当前的层数,纵坐标有两列,一列表示当前层的点的个数,一列表示到当前层一共的点的个数。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型 金字塔的层数
* @return int整型
*/
public int getNums(int n) {
// write code here
if (1 == n) {
return 1;
}
int mod = 1000000007;
int ans = 1;
int previousLevelSingleNum = 1;
int previousLevelTotal = 1;
for (int currentLevel = 2; currentLevel <= n; currentLevel++) {
int currentLevelSingleNum = (currentLevel + previousLevelSingleNum) % mod;
int currentLevelTotal = (previousLevelTotal + currentLevelSingleNum) % mod;
ans = currentLevelTotal;
previousLevelSingleNum = currentLevelSingleNum;
previousLevelTotal = currentLevelTotal;
}
return ans;
}
}