lc-202


/**
Write an algorithm to determine if a number n is happy. 

 A happy number is a number defined by the following process: 

 
 Starting with any positive integer, replace the number by the sum of the 
squares of its digits. 
 Repeat the process until the number equals 1 (where it will stay), or it loops 
endlessly in a cycle which does not include 1. 
 Those numbers for which this process ends in 1 are happy. 
 

 Return true if n is a happy number, and false if not. 

 
 Example 1: 

 
Input: n = 19
Output: true
Explanation:
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1
 

 Example 2: 

 
Input: n = 2
Output: false
 

 
 Constraints: 

 
 1 <= n <= 2³¹ - 1 
 
 Related Topics哈希表 | 数学 | 双指针 

 👍 1135, 👎 0 

*/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean isHappy(int n) {
        Set<Integer> sumSet = new HashSet();

        while (!sumSet.contains(n)) {
            sumSet.add(n);
            int newn = 0;

            while (n > 0) {
                int single = n % 10;
                newn += (single * single);
                n = n / 10;
            }

            if (newn == 1) {
                return true;
            }

            n = newn;
        }

        return false;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

文章作者: 倪春恩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 倪春恩 !