其实感觉这道题也不太easy。。。
题目编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
输入:n = 19
输出:true
这道题中,题目解释了大致有如下几种:
- 结果为1,返回true
- 无限循环,此时的判断逻辑就是同一个数出现两次以上
- 可能的情况(数太太太大了,处理不完)
针对第三点,不会出现这种情况,最后数会不断变小(见官方题解证明)
func isHappy(n int) bool {
m := make(map[int]bool)
for n != 1 && m[n] == false {
m[n], n = true, getSum(n)
}
return n==1
}
func getSum(n int) int {
sum := 0
for n > 0 {
sum += (n % 10) * (n % 10)
n = n / 10
}
return sum
}



