题目链接
https://leetcode.cn/problems/happy-number/
题解
题解一(Java)
作者:@仲景
重点就在 无限循环 上,记录是否重复是否循环都可以用hash表来解决
class Solution {
public boolean isHappy(int n) {
// 创建hash表保存每一次的n
Set<Integer> set = new HashSet<>();
// 临时变量,p用没有
int temp = 0;
// 一直循环到n等于1或者进入无限循环
while (n != 1 && !set.contains(n)) {
// 添加n到hash表中
set.add(n);
// 计算n的下一个值
temp = 0;
while (n >= 10) {
temp += (n % 10) * (n % 10);
n /= 10;
}
temp += (n % 10) * (n % 10);
n = temp;
}
// 退出循环要么等于1要么进入无限循环,判断一下n是否等于1即可
return n == 1;
}
}