题目
编写一个算法来判断一个数 n
是不是快乐数。
「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n
是 快乐数 就返回 true
;不是,则返回 false
。
示例1:
1 | 输入: 19 |
示例2:
1 | 输入:n = 2 |
提示:
1 <= n <= 2^31 - 1
解法
解法一:
网络搜索到得知非快乐数有个特点,计算过程中肯定会有4出现,那么就可以用这个特性来判断了。
Java
1 | class Solution { |
解法二:
还可以用Set来做判断,计算出来的数字是否已经出现过了,如果出现过了表示已经进入了一个“环路”,那么肯定是非快乐数了。
解法二参考:https://my.oschina.net/Tsybius2014/blog/524681
Java
1 | import java.util.HashSet; |