今日中等题:https://leetcode-cn.com/problems/factorial-trailing-zeroes/
近期为了备考5月底的高项,每天听课刷题,就断更了一阵子leetcode。今天想想好久没做题了,少了好多快乐,还是来做一题放松一下。
今天的题目说是中等题,其实比较简单,说要算尾随的0,那就是说,只要没有和最后一个0相连,中间的0其实可以不用管。
所以这又是一道数学题,没有思路的时候,不妨把前几位数列出来找找规律:
0:0
1:1
2:2
3:6
4:24
5:120
6:720
7:5040
8:40320
9:362880
10:3628800
可以很明显地看出规律了,只有遇到5或者10时,尾数0才会+1,那么我们只要统计n个累乘的数中有多少个5即可(10也是2*5)。
这里有个小的陷阱,注意是「n个累乘的数中」,而不是「n中」,所以不要简单地认为n/5就够啦。
另外,做完题目之后,可以多在题目下方的测试用例里补充一些边界或者异常数据,验证下代码的正确性和健壮性。
class Solution {
public int trailingZeroes(int n) {
int ret = 0;
while(n!=0) {
n /=5;
ret +=n;
}
return ret;
}
}
网友评论