1. question: 快乐数(简单)
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/happy-number
示例 1:
1 | 输入:n = 19 |
示例 2:
1 | 输入:n = 2 |
提示:
1 | 1 <= n <= 231 - 1 |
2. answers
这道题的难点在于如何确定它不是快乐数,难道要一直循环下去吗?显然不是,既然是无限循环(这里应该和无限不循环小数的无限不循环区分开来,也就是保证不会出现无限不循环),必然存在过程中的某个数。那么如何判断过程中存在当前数呢?显然用到了包含、匹配。采用哈希表来做。
将计算过程中出现的数保存在哈希表中,如果后续又出现了这个数,那么必定是无限循环了,不是快乐数。代码如下所示:
1 | public class Solution_0046 { |
3. 备注
参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com),代码随想录 (programmercarl.com)。