一、知识点:

动态规划(DP)

二、文字分析:

  • 动态规划:我们使用一个数组dp来保存每个阶段的计算结果,通过递推关系dp[i] = i * dp[i-1]来计算。最后返回dp[n]的结果。
  • 时间复杂度为O(n)

三、编程语言:

java

四、正确代码:

public class Solution {
    public int factorial(int n) {
        long result = 1;
        
        for (int i = 2; i <= n; i++) {
            result = (result * i) % 1000000007;
        }
        
        return (int)result;
    }
}