LeetCode刷題:階乘後的零

給定一個整數 n,返回 n! 結果尾數中零的數量。

示例 1:

輸入: 3
輸出: 0
解釋: 3! = 6, 尾數中沒有零。

示例 2:

輸入: 5
輸出: 1
解釋: 5! = 120, 尾數中有 1 個零.

說明: 你算法的時間複雜度應爲 O(log n) 。

題解:
這道題求解的是尾數中零的個數,根據乘法規則我們知道,2的倍數與5的倍數相乘得到尾數爲零的數字。這裏還要考慮本身就含有0的數字,比如:10,20,100……。綜合一下,我們只需要找到從1到要求階乘數字之間含有多少個5的倍數,比如,1~24含有4個5的倍數,分別是5,10,15,20,所以,24的階乘的尾數含有4個零。
時間和內存消耗爲:
在這裏插入圖片描述
代碼爲:

    class Solution {
    public int trailingZeroes(int n) {
        int ans=0;
        while(n!=0){
            n=n/5;
            ans+=n;
        }
        return ans;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章