Lc202_快乐数
1package 哈希;
2
3import java.util.HashSet;
4import java.util.Set;
5
6/**
7 * 202. 快乐数
8 * 编写一个算法来判断一个数 n 是不是快乐数。
9 * <p>
10 * 「快乐数」定义为:
11 * <p>
12 * 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
13 * 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
14 * 如果 可以变为 1,那么这个数就是快乐数。
15 * 如果 n 是快乐数就返回 true ;不是,则返回 false 。
16 * <p>
17 * <p>
18 * <p>
19 * 示例 1:
20 * <p>
21 * 输入:19
22 * 输出:true
23 * 解释:
24 * 12 + 92 = 82
25 * 82 + 22 = 68
26 * 62 + 82 = 100
27 * 12 + 02 + 02 = 1
28 * 示例 2:
29 * <p>
30 * 输入:n = 2
31 * 输出:false
32 * <p>
33 * <p>
34 * 提示:
35 * <p>
36 * 1 <= n <= 231 - 1
37 */
38public class IsHappy {
39 // 取数值各个位上的单数之和
40 static int getSum(int n) {
41 int sum = 0;
42 while (n > 0) {
43 sum += (n % 10) * (n % 10);
44 n /= 10;
45 }
46 return sum;
47 }
48
49 /**
50 * 因为结果集可能重复,所以考虑hash
51 * <p>
52 * 剩下的就是判断了
53 *
54 * @param n
55 * @return
56 */
57 public static boolean isHappy(int n) {
58 Set<Integer> set = new HashSet<>();
59 while (true) {
60 int sum = getSum(n);
61 if (sum == 1) {
62 return true;
63 }
64
65 if (set.contains(sum)) {
66 return false;
67 } else {
68 set.add(sum);
69 }
70 n = sum;
71 }
72 }
73
74 public static void main(String[] args) {
75 System.out.println(isHappy(19));
76 }
77}
不恋尘世浮华,不写红尘纷扰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理