HashSet
class Solution {
public boolean isHappy(int n) {
// 哈希集是基于HashMap实现的,区别就在于在HashMap中输入一个键值对,而在HashSet中只输入一个值。集合(Set)是不允许重复值的。
HashSet<Integer> set = new HashSet<Integer>();
while(true){
int sum = getSum(n);
if(sum == 1){
return true;
}
if(set.contains(sum)){
return false;
}else{
set.add(sum);
}
n = sum;
}
}
// 求和函数
private int getSum(int n){
int sum = 0;
while(n > 0){
sum += (n % 10) * (n % 10);
n = n / 10;
}
return sum;
}
}
题目中说无限循环,说明在求和过程中,sum会重复出现,如果重复出现return false
,否则一直找到sum = 1
则可以return true
当遇到要快速判断一个元素是否出现在集合里时需要考虑哈希