双指针——快乐数

一.题目描述

202. 快乐数 - 力扣(LeetCode)

二.题目解析

我们要判断一个数是不是快乐数要通过它的三个性质来进行判断。这个数会一直变化,由它的各个位的平方和重新构成这个数。如果这个数在变化的过程中变成了1,那么就是快乐数;如果陷入了循环,一直变不到1,就说明不是快乐数。

 所以,对于一个数n来说有两种情况:1、在进行若干次变换后变成了1;2、在进行若干次变换之后进入了循环。

但其实,我们可以将第一种也归为是进入循环的一种,只不过每一个位置都是1.

三.算法原理 

我们看到上面的情况图有没有联想到之前学习链表的一道题——带环链表。判断一个链表是否带环,我们利用了快慢双指针。这里我们也可以使用快慢指针来实现:

这里其实是在模拟带环链表的性质。我们让slow每次变换一次,fast变换两次即可。

扩展:

这道题之所以简单是因为题目已经告诉我们一定会进行循环,但是如果没有这句话呢?有没有可能n一直变换下去,不会进入循环?

答案是不会的!

四.代码实现

因为我们需要频繁求一个数的每个位的平方和,所以我们将其写成一个函数。

int getSquare(int n)
{int ans = 0;while (n){int index = n % 10;ans += index * index;n /= 10;}return ans;
}bool isHappy(int n)
{int slow = n;int fast = getSquare(n);while (fast != slow){slow = getSquare(slow);fast = getSquare(getSquare(fast));}return slow == 1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【玩转OCR】 | 腾讯云智能结构化OCR在多场景的实际应用与体验

文章目录 引言产品简介产品功能产品优势 API调用与场景实践图像增强API调用实例发票API调用实例其他场景 结语相关链接 引言 在数字化信息处理的时代,如何高效、精准地提取和结构化各类文档数据成为了企业和政府部门的重要需求。尤其是在面对海量票据、证件、表单和…

nginx-rtmp服务器搭建

音视频服务器搭建 本文采用 nginx/1.18.0和nginx-rtmp-module模块源代码搭建RTMP流媒体服务器 流程 查看当前服务器的nginx版本下载nginx和nginx-rtmp-module源代码重新编译nginx,并进行相关配置(nginx.conf、防火墙等)客户端测试连接测试搭…

借助Aspose.html控件, 使用 Java 编程将 HTML 转换为 BMP

Aspose.HTML for .NET 不仅提供超文本标记语言 ( HTML ) 文件处理,还提供流行图像文件格式之间的转换。您可以利用丰富的渲染和转换功能将SVG文件渲染为PNG、JPG或其他广泛使用的文件格式。但是,我们将使用此C# 图像处理库以编程方式在 C# 中将 SVG 转换…

区块链期末复习1.1:密码学哈希函数

一、哈希函数应该具备的三个特性 1.输入可以为任意长度的字符串 2.产生固定大小输出(比如256位) 3.能进行有效计算。对于n位字符串,可以在O(n)的时间内计算出哈希值。 二.加密哈希函数的三个特性 1.collision-resistance(碰撞阻力&#x…

华为:数字化转型只有“起点”,没有“终点”

上个月,我收到了一位朋友的私信,他询问我是否有关于华为数字化转型的资料。幸运的是,我手头正好收藏了一些,于是我便分享给他。 然后在昨天,他又再次联系我,并感慨:“如果当初我在进行企业数字…

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2) import android.content.Context import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Path import a…

中化信息与枫清科技深化合作:共探“AI+”产业新生态

随着数字化转型的浪潮席卷全球,数据已成为推动创新和经济增长的关键力量。为持续深化数据要素价值挖掘与应用实践,推动打造行业交流平台,驱动产业创新共荣,2024 年 12 月 18 日 -19 日,由中国通信标准化协会主办的“20…

Matrix-Breakout 2 Morpheus

第一步 信息收集 (1)寻找靶场真实ip arp-scan -l 靶场真实 ip 为192.168.152.154 (2)探测端口及服务 nmap -p- -sV 192.168.52.135 第二步 开始渗透 (1)访问web服务 http://192.168.152.154and http://192.168.52.135:81 发现 81 端口的页面要登录 我们使用 dirb 扫描…

我的AI工具箱Tauri版-ZoomImageSUPIR图像超细节缩放

本教程基于自研的AI工具箱Tauri版进行ZoomImageSUPIR图像超细节缩放。 ZoomImageSUPIR图像超细节缩放 是一款专为图像处理优化的工具,支持图像的高精度放大与缩小操作,满足多场景需求。通过集成 SUPIR(Super-resolution Image Processing wi…

软件工程-【软件项目管理】--期末复习题汇总

一、单项选择题 (1)赶工一个任务时,你应该关注( C ) A. 尽可能多的任务 B. 非关键任务 C. 加速执行关键路径上的任务 D. 通过成本最低化加速执行任务 (2)下列哪个不是项目管理计划的一部分&…

访问ipv6的坑

如何访问ipv6站点 本机ipv6回环地址: http://[0:0:0:0:0:0:0:1]:8080/index.html 类似ipv4的127.0.0.1 查看本机的ipv6地址 使用ipconfig命令查看 ac900::27bf:9999:6950:dfa7%15需要去掉%符号后面的内容 ac900::27bf:9999:6950:dfa http://[ac900::27bf:9999:6950:dfa]:80…

Java对象的内存分布(一)

一、概览 在Hotspot虚拟机中,java对象在内存中分布如下图所示: --------------------------------------------- | 对象头 | 实例数据 | 对齐填充 | --------------------------------------------- 对象大小 对象头 实例数据 [填…

RY2200 One Cell Li-ion and Li-poly Battery Protection IC

1、Features Protection ofCharger Reverse Connection 50mΩ Low RssoN) Internal Power MOSFET Protection of Battery Cell Reverse Connection Delay Times are generated inside Over-temperature Protection …

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…

harmony动画属性

属性动画 显式动画 转场动画

【day16】Java开发常用API

模块15回顾 在深入探讨模块16之前,让我们回顾一下【day15】中的重点内容: String类: 构造方法:String(), String(String s), String(char[] chars), String(byte[] bytes), String(char[] chars, int offset, int count), String…

申请腾讯混元的API Key并且使用LobeChat调用混元AI

申请腾讯混元的API Key并且使用LobeChat调用混元AI 之前星哥写了一篇文章《手把手教拥有你自己的大模型ChatGPT和Gemini等应用-开源lobe-chat》搭建的开源项目,今天这篇文章教大家如何添加腾讯云的混元模型,并且使用LobeChat调用腾讯混元AI。 申请腾讯混…

3D几何建模引擎Parasolid功能解析

一、什么是Parasolid? Parasolid是由Siemens PLM Software开发的高精度精密几何建模引擎。它全面评估CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAE(计算机辅助工程)、PLM(产品生…

QT开发【常用控件1】-Layouts Spacers

在 Qt 中,布局(Layouts)和间距(Spacers)是创建用户界面的关键组成部分。它们帮助开发者在窗口或对话框中组织和排列控件,以实现灵活和美观的界面设计。 1. 布局(Layouts) 布局是 Q…

flink sink doris

接上文&#xff1a;一文说清flink从编码到部署上线 网上关于flink sink drois的例子较多&#xff0c;大部分不太全面&#xff0c;故本文详细说明&#xff0c;且提供完整代码。 flink doris版本对照表 1.添加依赖 <!--doris cdc--><!-- 参考&#xff1a;"https…