题目:
思路:
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; } }
今天快乐了么