一、题目
二、思路(自己)
- 如果按照普通思维,即先求阶乘,再计算尾随0的数量即可
- 值得注意的是,尾随0的话,并不是得到的数字包含0的个数,而是末端0的个数
- 但是这样做是不行的,到后面肯定会超时
三、题解(官方)
- 首先需要清楚的是,末尾有多少个0,只需要判断在阶乘的过程中,乘了多少个0即可
- 化成因子即为2*5,由于2出现的频率远远高于5,所以我们只需要计算5出现的频率即可
- 因子5每隔5次出现一次,每隔25又会比5多出一次,每隔125会比25多出一次.....
class Solution {
public int trailingZeroes(int n) {
int count=0;
while (n>0){
count+=n/5;
n/=5;
}
return count;
}
}
- 理解之后其实代码挺简单的