zoukankan      html  css  js  c++  java
  • [Swift]LeetCode172. 阶乘后的零 | Factorial Trailing Zeroes

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9720718.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given an integer n, return the number of trailing zeroes in n!.

    Example 1:

    Input: 3
    Output: 0
    Explanation: 3! = 6, no trailing zero.

    Example 2:

    Input: 5
    Output: 1
    Explanation: 5! = 120, one trailing zero.

    Note: Your solution should be in logarithmic time complexity.


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

    示例 1:

    输入: 3
    输出: 0
    解释: 3! = 6, 尾数中没有零。

    示例 2:

    输入: 5
    输出: 1
    解释: 5! = 120, 尾数中有 1 个零.

    说明: 你算法的时间复杂度应为 O(log n) 


     1 class Solution {
     2     func trailingZeroes(_ n: Int) -> Int {
     3         //该数应为x*10k 的形式等于x*(2k *5k)
     4         //即求该数分解质因子后有几个5
     5         var num = n
     6         var sum:Int = 0
     7         while(num > 0)
     8         {
     9             num /= 5
    10             sum += num 
    11         }
    12         return sum
    13     }
    14 }

    16ms

     1 class Solution {
     2     func f1(_ n: Int) -> Int {
     3         if n == 0 {
     4             return 0
     5         }
     6         
     7         var all_cnt = 0
     8         for i in 1...n {
     9             var num = i
    10             var cnt = 0
    11             while num % 5 == 0 {
    12                 num /= 5
    13                 cnt += 1
    14             }
    15             if (cnt > 0) {
    16                 print(i, cnt)
    17             }
    18             all_cnt += cnt
    19         }
    20         return all_cnt
    21     }
    22     
    23     func f(_ n: Int) -> Int {
    24         var factor = 5
    25         var all_times = 0
    26         while factor <= n {
    27             var times = n / factor
    28             all_times += times
    29             factor *= 5
    30         }
    31         
    32         return all_times
    33     } 
    34     
    35     func trailingZeroes(_ n: Int) -> Int {
    36         
    37         return f(n)
    38     }
    39 }

    12ms

    1 class Solution {
    2     func trailingZeroes(_ n: Int) -> Int {
    3         if n == 0 {
    4             return 0
    5         }
    6         
    7         return (n / 5) + trailingZeroes(n / 5)
    8     }
    9 }
  • 相关阅读:
    hello world之vivado程序解决方法
    FPGA的电源选择重要性分析
    RabbitMQ的简单使用
    RabbitMQ的相关概念
    Spring整合Quartz
    DisallowConcurrentExecution注解
    Quartz框架中的监听器
    JobStore使用
    quartz基本介绍
    java自定义注解
  • 原文地址:https://www.cnblogs.com/strengthen/p/9720718.html
Copyright © 2011-2022 走看看