算法-快乐数(202)

算法-快乐数(202)_第1张图片

这道题可以用for循环来做,也就是不停计算平方直到结果为1或者出现循环,但是题目要求用hash表来做,那我们可以稍微改造一下,下面是代码


import java.util.HashSet;
import java.util.Set;

public class Solution9 {
    // 创建一个hash_set用来存储n的平方和   检测一下如果n变成了1 或者出现了循环 则退出循环
    public boolean isHappy(int n) {
        Set setNaums = new HashSet<>();
        while (n!=1&&!setNaums.contains(n)){
            setNaums.add(n);
            n=getNum(n);
        }
        return n==1;
    }
    // 计算平方和
    private  int getNum(int n){
        int sum=0;
        while(n>0){
            int temp=n%10;
            sum+=temp*temp;
            n/=10;
        }
        return sum;
    }
}

 

你可能感兴趣的:(算法,算法,哈希算法,数据结构)