[Leetcode] 172. 階乘後的零 java
阿新 • • 發佈:2018-12-17
給定一個整數 n,返回 n! 結果尾數中零的數量。
示例 1:
輸入: 3 輸出: 0 解釋: 3! = 6, 尾數中沒有零。
示例 2:
輸入: 5 輸出: 1 解釋: 5! = 120, 尾數中有 1 個零.
說明: 你演算法的時間複雜度應為 O(log n)。
最開始我是這樣寫的,但是n大了的時候,會丟擲StackOverFlowError(執行緒請求的棧深度大於虛擬機器允許的深度。)
class Solution { public int trailingZeroes(int n) { int result=jiecheng(n); int count=0; while(result!=0){//求幾個0 if(result%10==0) count++; result/=10; } return count; } private int jiecheng(int n){//求階乘結果 if(n==0) return 1; if(n==1||n==2) return n; int multiply=n*jiecheng(n-1); return multiply; } }
所以查了一下大家都是怎麼實現的
1×5 → 5! → 1個0 2×5 → 10! → 2個0 3×5 → 15! → 3個0 4×5 → 20! → 4個0 5×5 → 25! → 6個0 6×5 → 30! → 7個0 7×5 → 35! → 8個0 8×5 → 40! → 9個0 9×5 → 45! → 10個0 10×5 → 50! → 12個0 11×5 → 55! → 13個0 --------------------- 作者:努力努力再努力Sunny 原文:https://blog.csdn.net/z983002710/article/details/81100762 class Solution { public int trailingZeroes(int n) { int count=0; while(n!=0){ n/=5; count+=n; } return count; } }