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

快乐数 力扣202

一、题目

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

  • 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
  • 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
  • 如果这个过程 结果为 1,那么这个数就是快乐数。

如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

示例 1:

输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

示例 2:

输入:n = 2
输出:false

二、思路

关键点:

        如果将该数替换为它每个位置上的数字的平方和之后

        发现这个数已经出现过了,那就说明其实这个数已经就不是快乐数了,它已经进入循环了。

三、代码

class Solution {public boolean isHappy(int n) {//1.用一个hashset存储每一次替换出现过的数字HashSet<Integer> records = new HashSet<>();//2.如果这个数字没出现过,就把它加进hashset中,出现过直接结束循环,说明不是快乐数while(n != 1 && !records.contains(n)) {records.add(n);//3.找到下一次的替换数字n = getNext(n);}return n == 1;}private static int getNext(int n) {//4.实现n的各位平方求和int sum = 0;while(n != 0){sum += (n % 10) * (n % 10);n = n / 10;}return sum;}
}

以2为测试用例,则结果分别为 2 4 16 37 58 89 145 42 20 4 

4重复出现,因此可以判断2不是快乐数!


http://www.mrgr.cn/news/93660.html

相关文章:

  • FreeSWITCH 之 chat
  • π0及π0_fast的源码剖析——核心模块src的全面分析与解读:如何实现PaLI-Gemma、如何去噪生成动作
  • ROS分布式部署通信
  • C#类型转换基本概念
  • 【江协科技STM32】ADC数模转换器-学习笔记
  • 考研数一非数竞赛复习之Stolz定理求解数列极限
  • 【CVPR2025】 EVSSM:用状态空间模型高效去模糊
  • LINUX网络基础 [五] - HTTP协议
  • 【深度学习】宠物品种分类Pet Breeds Classifier
  • 在人工智能软件的帮助下学习编程实例
  • 【NLP 32、文本匹配任务 —— 深度学习】
  • 从自己电脑的浏览器访问阿里云主机中运行的LLaMA-Factory webui
  • P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS
  • 前端面试题 口语化复述解答(从2025.3.8 开始频繁更新中)
  • [HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署
  • LVGL开发说明
  • 体验开源openeuler openharmony stratovirt模拟器
  • swift -(5) 汇编分析结构体、类的内存布局
  • PAT线上考试 真题/注意细节(甲/乙级)
  • Git系列之git tag和ReleaseMilestone