美文网首页
202. Happy Number

202. Happy Number

作者: 尚无花名 | 来源:发表于2019-05-14 10:59 被阅读0次

202. Happy Number
这道题算法没什么好说的。就是recursion搞一下。
这题难的地方是证明。
怎么证明你的算法不会stack overflow, 怎么证明它不会数据太大崩掉?
对于一个m位的数来说,按照happy number的下一个数是最多是81 * m
n > 10 ^ (m - 1)
当 m >= 4的时候,下一个数永远比当前的数小。
所以这个范围不会超过 1000
看一下代码

class Solution {
    public boolean isHappy(int n) {
        Set<Integer> visited = new HashSet<>();
        return helper(n, visited);
    }
    private boolean helper(int n, Set<Integer> visited) {
        if (n == 1) return true;
        if (!visited.add(n)) return false;
        int next = 0;
        while (n > 0) {
            next += (n % 10) * (n % 10);
            n /= 10;
        }
        return helper(next, visited);
    }
}

相关文章

网友评论

      本文标题:202. Happy Number

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