🌕 202. 快乐数
2022年6月9日
- algorithm
🌕 202. 快乐数
难度: 🌕
问题描述
解法
class Solution {
public boolean isHappy(int n) {
// 思路:
// 通过 HashSet 记录是否走过这个数,如果走过说明已经出现循环了,
// 既然第一次走不出去,那么之后,不论怎么走都会转圈圈
// 并不会出现超范的问题,
// int 最多占 32 位,一位数的平方最大为 81, 81*32 < int 范围
HashSet<Integer> set = new HashSet<>();
while(n != 1) {
if(set.contains(n)) {
return false; // 出现循环
}
set.add(n);
n = mySol(n);
// System.out.println(n);
}
return true;
}
private int mySol(int n) {
// 求 n 各位数的平方和
int res = 0;
while(n != 0) {
int cur = n % 10;
res += cur * cur;
n /= 10;
}
return res;
}
}