今天电面考了Happy Number, 挂了, 求指导# JobHunting - 待字闺中
m*p
1 楼
Happy Number 定义为 (只考虑正整数):
1是Happy number,
各个数字的平方和为happy number, 那么这个数字是happy number
例子: 13 -> 1^2+3^2 -> 10 -> 1^2+0^2 -> 1
这样13和10都是happy number
我的思路是: 如果计算出1, 返回true, 如果算出了以前出现过的数,返回false(因
为会形成一个循环,这样永远到不了1)
看网上的思路大体就是这样,可是今天面的三哥非要问:
为什么不能有第三种情况,就是一直不出现重复数字,还一直无法得到1(不断增长下去
)?
我也给不出严格证明,三哥最后给个方案,如果下一个int数字overflow的话,就返回
false
可是这完全多此一举,因为不会有这种情况的,请问如何能给出严格证明?
1是Happy number,
各个数字的平方和为happy number, 那么这个数字是happy number
例子: 13 -> 1^2+3^2 -> 10 -> 1^2+0^2 -> 1
这样13和10都是happy number
我的思路是: 如果计算出1, 返回true, 如果算出了以前出现过的数,返回false(因
为会形成一个循环,这样永远到不了1)
看网上的思路大体就是这样,可是今天面的三哥非要问:
为什么不能有第三种情况,就是一直不出现重复数字,还一直无法得到1(不断增长下去
)?
我也给不出严格证明,三哥最后给个方案,如果下一个int数字overflow的话,就返回
false
可是这完全多此一举,因为不会有这种情况的,请问如何能给出严格证明?