Tips:
第一次没有AC是因为没有判断1这个特殊的数,其他没有什么太难的地方,代码和注释如下:
public class Solution202 {
public boolean isHappy(int n) {
int nn = n,temp = 0;
Set<Integer> set = new HashSet<Integer>();<span style="white-space:pre"> </span>//用set检测是否回到了起点
set.add(n);<span style="white-space:pre"> </span>//将n加入
if(n == 1)<span style="white-space:pre"> </span>//1需要先判断
return true;
while(temp!=1) {
temp = 0;
while (nn != 0) {<span style="white-space:pre"> </span>//各位的平方和
temp += Math.pow(nn % 10, 2);
nn = nn / 10;
}
if(set.contains(temp))<span style="white-space:pre"> </span>
return false;
set.add(temp);
nn = temp;
}
return true;<span style="white-space:pre"> </span>//若循环结束则是Happy Number
}
}
本文详细介绍了如何通过优化算法解决Happy Number判断问题,并提供了完整的代码实现。着重强调了在处理特殊数值如1时的边界条件判断,以及使用HashSet进行路径检测避免循环,确保算法的高效性和准确性。
979

被折叠的 条评论
为什么被折叠?



