Leetcode 202. Happy Number

作者: ShutLove | 来源:发表于2017-11-21 23:45 被阅读12次

    Write an algorithm to determine if a number 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, and 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 numbers.

    思路:
    按照题目要求写一个函数不断求出一个数字的next,判断next是否等于1,不等于1就循环或递归继续求下去。
    坑:如果这个数字不是happy num,那么它的next会是一个死循环,因此需要用一个hashset来记录已经生成过的数字。

    public boolean isHappy(int n) {
        HashSet<Integer> set = new HashSet<>();
        while (set.add(n)) {
            int res = 0, tmp = 0;
            while (n > 0) {
                tmp = n % 10;
                res += tmp * tmp;
                n /= 10;
            }
            if (res == 1) {
                return true;
            } else {
                n = res;
            }
        }
    
        return false;
    }
    

    相关文章

      网友评论

        本文标题:Leetcode 202. Happy Number

        本文链接:https://www.haomeiwen.com/subject/fobgvxtx.html