编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 True ;不是,则返回 False 。
leetcode链接:
https://leetcode-cn.com/problems/happy-number/
解题思路:
用map存数据,然后判断新的sum有没有存在,看是否进入循环
参考链接:
https://leetcode-cn.com/problems/happy-number/solution/kuai-le-shu-by-leetcode-solution/
代码:
func isHappy(n int) bool {
num := map[int]bool{}
for n!=1 {
sum := 0
for n!=0 {
sum = sum + (n%10)*(n%10)
n = n/10
}
n = sum
_,ok := num[n]
if ok {
return false
} else {
num[n] = true
}
}
return n==1
}
注意:
map使用