当前位置: 首页 > news >正文

[快乐数](哈希表)

在这里插入图片描述

思路

核心思路:使用哈希集合检测循环

  1. 计算平方和:编写辅助函数计算数字各位数字的平方和
  2. 循环检测:使用哈希集合记录已经出现过的数字
  3. 终止条件
    • 如果得到1,返回true
    • 如果数字重复出现,说明进入循环,返回false

代码实现分析

class Solution {
public:// 辅助函数:计算数字各位数字的平方和int sum(int n) {int ans = 0;while (n > 0) {int d = n % 10;  // 获取最后一位数字n /= 10;         // 去掉最后一位ans += d * d;    // 平方并累加}return ans;}// 主函数:判断是否是快乐数bool isHappy(int n) {unordered_set<int> mp;  // 用于记录已经出现过的数字while (n != 1) {       // 循环直到得到1n = sum(n);        // 计算平方和// 如果这个数字已经出现过,说明进入循环if (!mp.count(n)) {mp.insert(n);   // 记录新数字} else {return false;   // 出现重复,不是快乐数}}return true;  // 得到1,是快乐数}
};
1. 平方和计算函数
int sum(int n) {int ans = 0;while (n > 0) {int d = n % 10;  // 取最后一位数字n /= 10;         // 去掉最后一位ans += d * d;    // 平方累加}return ans;
}
  • 例如:n=19 → 1²+9²=82
  • 例如:n=82 → 8²+2²=68
2. 主循环逻辑
while (n != 1) {n = sum(n);  // 计算下一个数字if (!mp.count(n)) {  // 如果数字未出现过mp.insert(n);    // 记录} else {             // 如果数字已出现过return false;    // 检测到循环}
}
http://www.dtcms.com/a/348704.html

相关文章:

  • 解决编译osgEarth中winsocket2.h找不到头文件问题
  • 基于Spark的热门旅游景点数据分析系统的设计-django+spider
  • Spring Boot测试陷阱:失败测试为何“传染”其他用例?
  • 【追涨抄底关注】副图指标 紫色主力线上行表明资金介入明显 配合价格突破时可靠性更高
  • deepseek连接solidworks设计一台非标设备 (part1)
  • 阿里云ECS服务器搭建ThinkPHP环境
  • 互联网大厂AI/大模型应用开发工程师面试剧本与解析
  • 阿里云云数据库RDS PostgreSQL管控功能使用
  • 基于SpringBoot的婚纱影楼服务预约平台【2026最新】
  • Spring AI 学习笔记(2)
  • GitHub 热榜项目 - 日榜(2025-08-24)
  • Wireshark USRP联合波形捕获(下)
  • windows上如何实现把指定网段的流量转发到指定的端口,有哪些界面化的软件用来配置完成,类似于 Linux中的iptables规则实现
  • 6.1Element UI布局容器
  • 【Luogu】P2602 [ZJOI2010] 数字计数 (数位DP)
  • 基于大模型的对话式推荐系统技术架构设计-- 大数据平台层
  • 07 - spring security基于数据库的账号密码
  • window11无法连接Fortinet SSL VPN
  • Elasticsearch如何确保数据一致性?
  • 『深度编码』操作系统-进程之间的通信方法
  • 记录一下TVT投稿过程
  • 阿里云大模型应用实战:从技术落地到业务提效
  • Dify 从入门到精通(第 53/100 篇):Dify 的分布式架构(进阶篇)
  • 兑换汽水瓶
  • 关于并查集
  • 数字营销岗位需要具备的能力有哪
  • Java 内存模型(JMM)与并发可见性:深入理解多线程编程的基石
  • Flink session cluster与Flink per-job cluster区别
  • Zynq开发实践(Verilog、仿真、FPGA和芯片设计)
  • Linux-函数的使用-编写监控脚本