给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。示例 2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。
解法一
//时间复杂度O(logn), 空间复杂度O(1)
class Solution {
public:
int trailingZeroes(int n) {
int res = 0;
while(n > 0) {
int t = n / 5;
res += t;
n = t;
}
return res;//n因子中5的个数
}
};
返回n的质因子中5的个数即可。因为对于每个5,总能找到一个因子2与其相乘得10,其它因子都不可能乘得10。故5的个数即为末尾0的个数。
2019/04/27 00:58