链接: https://leetcode-cn.com/problems/happy-number/
题面
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为1,也可能是无限循环,但始终变不到1。
- 如果可以变为1,那么这个数就是快乐数。
解法
简单的解法可以用循环,每次判断是否为1,超过一定次数后循环结束。
如果我们把每个数字想象成一个节点,就可以将问题转化为环路检测
联想到链表的解决方案—-快慢指针,判断有没有相遇,相遇的时候是否等于1即可。
代码
1 | class Solution { |