給定乙個整數 n,返回 n! 結果尾數中零的數量。
示例 1:
輸入: 3
輸出: 0
解釋: 3! = 6, 尾數中沒有零。
示例 2:
輸入: 5
輸出: 1
解釋: 5! = 120, 尾數中有 1 個零.
說明:你演算法的時間複雜度應為 o(log n) 。
最開始我使用的方法是一邊計算階乘,一邊計算零的個數的方法,但是這種方法毫無疑問的報錯了,我猜測就算不報錯也會超時吧。
報錯的原因很簡單,就是當數n
大了以後,可能會超出int
型別的表示範圍,可能會導致結果變為負數或者因溢位而造成的截斷誤差
所以後來採用了如下的方法:
我們可以想在什麼情況下乘積的末尾會是零,自然就是因數包含了類似於10這種自身帶有0的數和類似於5這種自身包含5的數
func trailingzeroes(n int) int
count := 0
for i := 1; i <= n; i++ else
if number%5 != 0
}} }
return count
}
LeetCode 階乘後的零
一.題目描述 給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 二.解法 老實說,這道題,博主並沒有做出來,是抄的部落格大神的答...
LeetCode 階乘後的零
給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 思路分析 不難發現,只用出現2的倍數 5的倍數相乘才會在末尾出現零。並且2的倍...
leetcode 階乘後的零
給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 本題如果暴力乘計數的話必然會爆範圍,因為數字增長的速度太快了 其實乘法裡面,末...