C++实现LeetCode(172.求阶乘末尾零的个数)

 更新时间:2021年08月02日 16:31:35   作者:Grandyang  
这篇文章主要介绍了C++实现LeetCode(172.求阶乘末尾零的个数),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

[LeetCode] 172. Factorial Trailing Zeroes 求阶乘末尾零的个数

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.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

这道题并没有什么难度,是让求一个数的阶乘末尾0的个数,也就是要找乘数中 10 的个数,而 10 可分解为2和5,而2的数量又远大于5的数量(比如1到 10 中有2个5,5个2),那么此题即便为找出5的个数。仍需注意的一点就是,像 25,125,这样的不只含有一个5的数字需要考虑进去,参加代码如下:

C++ 解法一:

class Solution {
public:
    int trailingZeroes(int n) {
        int res = 0;
        while (n) {
            res += n / 5;
            n /= 5;
        }
        return res;
    }
};

Java 解法一:

public class Solution {
    public int trailingZeroes(int n) {
        int res = 0;
        while (n > 0) {
            res += n / 5;
            n /= 5;
        }
        return res;
    }
}

这题还有递归的解法,思路和上面完全一样,写法更简洁了,一行搞定碉堡了。

C++ 解法二:

class Solution {
public:
    int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }
};

Java 解法二:

public class Solution {
    public int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }
}

Github 同步地址:

https://github.com/grandyang/leetcode/issues/172

类似题目:

Number of Digit One

Preimage Size of Factorial Zeroes Function    

参考资料:

https://leetcode.com/problems/factorial-trailing-zeroes/

https://leetcode.com/problems/factorial-trailing-zeroes/discuss/52371/My-one-line-solutions-in-3-languages

https://leetcode.com/problems/factorial-trailing-zeroes/discuss/52373/Simple-CC%2B%2B-Solution-(with-detailed-explaination)

到此这篇关于C++实现LeetCode(172.求阶乘末尾零的个数)的文章就介绍到这了,更多相关C++实现求阶乘末尾零的个数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解C++编译器优化技术

    详解C++编译器优化技术

    现代编译器缺省会使用RVO(return value optimization,返回值优化)、NRVO(named return value optimization、命名返回值优化)和复制省略(Copy elision)技术,来减少拷贝次数来提升代码的运行效率。
    2021-06-06
  • C语言编程const遇上指针分析

    C语言编程const遇上指针分析

    本篇文章是C语言编程篇,主要为大家介绍C语言编程中当Const遇上指针的分析讲解,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • C语言之system函数案例详解

    C语言之system函数案例详解

    这篇文章主要介绍了C语言之system函数案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • c语言中字符串函数(库函数使用)和模拟实现图文教程

    c语言中字符串函数(库函数使用)和模拟实现图文教程

    C语言中对字符和字符串的处理很是频繁,但是C语言本身并没有字符串类型,这篇文章主要给大家介绍了关于c语言中字符串函数(库函数使用)和模拟实现的相关资料,需要的朋友可以参考下
    2024-01-01
  • C++使用数组来实现哈夫曼树

    C++使用数组来实现哈夫曼树

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近
    2022-05-05
  • 基于typedef的用法详解

    基于typedef的用法详解

    本篇文章是对typedef的用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • QT Creator+OpenCV实现图像灰度化的示例代码

    QT Creator+OpenCV实现图像灰度化的示例代码

    这篇文章主要为大家详细介绍了QT如何利用Creator和OpenCV实现图像灰度化效果,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-12-12
  • C++实现中缀转后缀的示例详解

    C++实现中缀转后缀的示例详解

    这篇文章主要为大家详细介绍了如何利用C++实现中缀转后缀的问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • c/c++小游戏源代码

    c/c++小游戏源代码

    这篇文章主要介绍了c/c++小游戏源代码,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • C语言实现通用数据结构之通用椎栈

    C语言实现通用数据结构之通用椎栈

    这篇文章主要为大家详细介绍了C语言实现通用数据结构之通用椎栈,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论