ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

202. 快乐数

202. 快乐数 202. 快乐数202. 快乐数编写一个算法来判断一个数n是不是快乐数。「快乐数」 定义为对于一个正整数每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1也可能是 无限循环 但始终变不到1。如果这个过程 结果为1那么这个数就是快乐数。如果n是 快乐数 就返回true不是则返回false。示例 1输入n19输出true解释1^29^2828^22^2686^28^21001^20^20^21示例 2输入n2输出false提示1 n 2 31 − 1 1 n 2^{31} - 11n231−1思路这题的关键其实就是在于什么时候可以退出循环如果某一步计算出的结果发现曾经出现过了说明后续结果也会一直不断重复会进入了无限循环此时我们应该退出了。而判断一个数字是否出现过第一反应就是使用Set。因此思路就很清晰了首先定义一个Set集合用来存放计算后的平方和sum如果sum在Set中已存在即进入了死循环则退出如果sum不存在于Set则将sum放入Set直至找到平方和为1或者进入死循环就返回false。Go代码funcisHappy(nint)bool{/*首先定义一个Set集合用来存放计算后的平方和sum如果sum在Set中已存在即进入了死循环则退出 如果sum不存在Set则将sum放入Set 直至找到平方和为1或者进入死循环就返回false。*/set:make(map[int]bool)forn!1!set[n]{set[n]true// 旧n放入Set表示出现过了ngetSum(n)}returnn1}funcgetSum(nint)int{sum:0forn!0{num:n%10// 当前个位数上的数字sumnum*num n/10}returnsum}
返回列表