美文网首页
172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

作者: jluemmmm | 来源:发表于2021-08-18 11:32 被阅读0次

    给定一个整数n,返回 n! 结果中零的数量。

    计算结果中0的个数,实际是计算n! 中10的数目,需要看执行乘法的过程中,有多少 2 和 5的因子的数。比如当n = 16,包含5因子的数字实5,10,15,包含2的因子的数字是2,4,6,8,10,12,14,因为只有三个完整的对,因此16之后有3个0。
    实际上,包含2的因子的数字一定比包含5的因子的数字多,因此无需对包含2的因子的数目进行计算。

    • 时间复杂度O(n),空间复杂度O(1)
    • Runtime: 72 ms, faster than 91.82%
    • Memory Usage: 40.3 MB, less than 51.42%
    /**
     * @param {number} n
     * @return {number}
     */
    var trailingZeroes = function(n) {
      let res = 0;
      for (let i = 5; i <= n; i += 5) {
        let powerOf5 = 5;
        while (i % powerOf5 === 0) { 
          res++;
          powerOf5 *= 5;
        }
      }
      return res;
    };
    
    • 时间复杂度O(logn),空间复杂度O(1)
    • Runtime: 84 ms, faster than 48.75%
    • Memory Usage: 40.2 MB, less than 51.42%
    /**
     * @param {number} n
     * @return {number}
     */
    var trailingZeroes = function(n) {
      let res = 0;
      while (n > 0) {
        n = Math.floor(n / 5);
        res += n;
      }
      return res;
    };
    

    相关文章

      网友评论

          本文标题:172. Factorial Trailing Zeroes

          本文链接:https://www.haomeiwen.com/subject/rxhgbltx.html