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

17-算法打卡-哈希表-快乐数-leetcode(202)-第十七天

1 题目地址

202. 快乐数 - 力扣(LeetCode)202. 快乐数 - 编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为: * 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 * 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 * 如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。 示例 1:输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1示例 2:输入:n = 2输出:false 提示: * 1 <= n <= 231 - 1 https://leetcode.cn/problems/happy-number/description/
2 题目说明

编写一个算法来判断一个数 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

 

提示:

  • 1 <= n <= 231 - 1


3 解题思路

1、整数类型拆解  比如:整数789拆分成 7 8 9 
        实现方案:  789 / 10 = 78     789%10  = 9
                             78 / 10 = 7       78  % 10  = 8
                                7 / 10 = 0       7   % 10  = 7
将整数对10取余,得到整数的组成数字,比如9
将整数对10相除,得到下一次进行取余的数据(去掉已经获得的组成数据);
比如整数789,按照这种方式依次获取的数据是9 8 7 倒序的方式

 public List<Integer> getNumberPart(int n) {List<Integer> partList = new ArrayList<>();while (n!=0) {// 整数的组成部分int part = n % 10; // 用于下次获取整数的部分n = n / 10;partList.add(part);}// 方式一: 倒序输出for (int i=partList.size()-1; i>=0; i--) {System.out.print(partList.get(i) + " ");}// 方式二:直接倒序Collections.reverse(partList);return partList;}

2、题干中表示可能会无限循环,也就是说在求和的过程中,sum会重复出现,这块就需要将已经出现的数据存储下来,如果下次处理中发现又出现了,可以直接退出。


4 代码编写

class Solution {public boolean isHappy(int n) {// 存放历史数据HashSet<Integer> record  = new HashSet<>();// 等于1或者产生了循环则退出,否则继续while (!record.contains(n) && n!=1) {record.add(n);n = getNumber(n);}return n==1;}// 整数n,组成数据的平方的和,比如n=78 , result = 7*7+8*8public int getNumber(int n) {int result = 0;while (n!=0) {int part = n % 10; result += part * part;n = n / 10;}return result;}}

 

http://www.xdnf.cn/news/209.html

相关文章:

  • Motion Tracks:少样本模仿学习中人-机器人之间迁移的统一表征
  • PyCharm Flask 使用 Tailwind CSS v3 配置
  • 基于若依的ruoyi-vue-plus的nbmade-boot在线表单的设计(七)后端方面的设计
  • 软考高项ITTO(输入——>工具——>输出)——【项目整合管理】
  • 番外篇 | SEAM-YOLO:引入SEAM系列注意力机制,提升遮挡小目标的检测性能
  • spring cloud gateway前面是否必须要有个nginx
  • FreeSWITCH中SIP网关(Gateway)操作
  • 操作系统-PV
  • C++23 新特性:行拼接前去除空白符 (P2223R2)
  • 嵌入式开发--STM32G4系列硬件CRC支持MODBUS和CRC32
  • 一个好用的高性能日志库——NanoLog
  • EnlightenGAN:低照度图像增强
  • CUDA Driver 安装与升级(CentOS 7)
  • Day(23)--反射
  • java的lambda和stream流操作
  • # 使用 PyTorch 构建并训练一个简单的 CNN 模型进行图像分类
  • 推荐一款Umi-OCR_文字识别工具
  • 黑马V11版 最新Java高级软件工程师课程-JavaEE精英进阶课
  • 基于 JSP 的企业财务管理系统:设计、实现与技术解析
  • C++ 面向对象关键语法详解:override、虚函数、转发调用和数组引用传参-策略模式
  • 招商信诺原点安全:一体化数据安全管理解决方案荣获“鑫智奖”!
  • 健康养生指南
  • 51单片机实验六:通用型1602液晶操作方法
  • java 排序算法-快速排序
  • uCOS3实时操作系统(系统架构和中断管理)
  • 【行测】数量关系
  • 医学教育视频会议系统私有化部署方案
  • 抗辐照设计优化:商业航天高可靠系统设计的关键路径
  • Zookeeper介绍与安装配置
  • webgl入门实例-11WebGL 视图矩阵 (View Matrix)基本概念