(仅提供思路,代码超时了,看看有没有人能帮忙优化一下,谢谢)

  1. 当前所在层的点的个数 = 上一层的点的个数 + 当前的层数
  2. 截至当前层的所有点的个数 = 截至上一层的所有点的个数 + 当前所在层的点的个数

有点绕,可以自己画一个表格。横坐标表示当前的层数,纵坐标有两列,一列表示当前层的点的个数,一列表示到当前层一共的点的个数

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;
    }
}