LeetCode階乘後的零Swift
阿新 • • 發佈:2020-12-21
給定一個整數 n,返回 n! 結果尾數中零的數量。
示例 1:
輸入: 3 輸出: 0 解釋: 3! = 6, 尾數中沒有零。
示例2:
輸入: 5 輸出: 1 解釋: 5! = 120, 尾數中有 1 個零.
說明: 你演算法的時間複雜度應為O(logn)。
思路一:
先計算階乘總乘積,再除10計算0的個數,n為大數時,記憶體溢位,時間負責度也不是要求的O(logn)
思路二:
找規律
5!=5*4*3*2*1
10!=10*9*8*7*6*5*4*3*2*1
15!=15*14*13*12*11*10*9*8*7*6*5*4*3*2*1
20!=20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1
25!=25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1
題目求0的個數,因為10 = 5 * 2,就轉變了求 5 的個數。
5! 含5 5 共1個5
10! 含5 10 5 共2個5
15! 含5 15 10 5 共3個5
20!含5 2015 10 5 共4個5
25!含5 25(含2個5) 2015 10 5共6個5 每5個數含1個5 每25個數含1個25(多含1個5)
125!每5個數含1個5 每25個數含1個25(多含1個5)每125個數含1個125(又多含1個5)
class Solution { func trailingZeroes(_ n: Int)-> Int { var five = 0 var n = n while n >= 5 { n /= 5 five += n } return five } }