快乐数

题目:

   

 

 思路:

  1 hashset 加入集合判断新的数是否在set中,防止死循环

  2 递归处理,出口时 n == 1 返回true ,   集合包含新的数据(拆分后的平方相加) 返回false 


(一)代码

class Solution {
    public boolean isHappy(int n) {
        //用于判断是否包含重复的数据
        HashSet<Integer> set = new HashSet<>();
        set.add(n);
        return dfs(n,set);
    }

    private boolean dfs(int n , HashSet<Integer> set){

        if(n == 1){
            return true;
        }
        //获取拆分后的平方数
        int v = get(n);
        //防止死循环
        if(set.contains(v)) return false;
        //加入set集合
        set.add(v);
        //递归判断
        return dfs(v,set);
    }

    private int get(int n){
        int count = 0 ;
        while(n != 0){
            int y = n % 10;
            count += y*y;
            n /= 10;
        }
        return count;
    }

}

 

 


 

 

 

        今天快乐了么

 

posted @ 2021-10-18 10:44  朝才  阅读(93)  评论(0编辑  收藏  举报