力扣Lc20--- 202.快乐数(java版)-2024年3月20日

1.题目

在这里插入图片描述

2.知识点

(1)while (seen.contains(n) == false) {
// 循环体
}

!seen.contains(n)
等同
(2)

当传入数字 19 给 isHappy(19) 方法时,下面是每一行代码的执行过程:

初始化一个空的 HashSet,命名为 ss,用于存储已经计算过的数字。

声明并初始化 sum 变量为 0,用于存储各位数字的平方和。

进入 while 循环。由于 n 的初始值不等于 1,且 ss 集合中不包含 n,因此循环条件成立,进入循环体。

将当前的数字 n,即 19,添加到集合 ss 中。

调用 GetNext(n) 方法计算 n 的下一个数字。在 GetNext() 方法中,我们首先将 n 的个位数字取出并计算其平方,然后将其相加得到 sum,即 1^2 + 9^2 = 1 + 81 = 82。

将计算得到的 sum 值赋给 n。

继续循环,此时 n 的值为 82。

重复上述步骤,将 82 添加到 ss 集合中,并通过 GetNext() 方法计算下一个数字。在 GetNext() 方法中,计算 82 的各位数字的平方和得到 68,并将其赋给 n。

循环继续执行,此时 n 的值为 68。

重复上述步骤,将 68 添加到 ss 集合中,并通过 GetNext() 方法计算下一个数字。在 GetNext() 方法中,计算 68 的各位数字的平方和得到 100,并将其赋给 n。

循环继续执行,此时 n 的值为 100。

重复上述步骤,将 100 添加到 ss 集合中,并通过 GetNext() 方法计算下一个数字。在 GetNext() 方法中,计算 100 的各位数字的平方和得到 1,并将其赋给 n。

此时,循环继续执行,但是 n 的值已经等于 1,不满足循环条件,退出循环。

返回 n == 1,因为 n 的值为 1,所以返回 true,说明数字 19 是一个快乐数。

这就是对于数字 19 的每一行代码的执行过程。

3.代码实现

import java.util.HashSet;
import java.util.Set;

public class Solution {
    public boolean isHappy(int n) {
        Set<Integer>  ss=new HashSet<>();
        while(n!=1&&ss.contains(n)==false){
            //循环判断条件是 当n不等于1的时候继续循环  并且 ss集合里面不能重复出现已出现的数
            ss.add(n);
            n=GetNext(n);
        }
        return n ==1;
    }
    private int GetNext(int n)
    {
        int sum=0;
        while(n>0)//当n是正整数的时候
        {
            int digit=n%10;//从左到右取每个位的数 
            sum=sum+digit*digit;//将这个数平方
            n=n/10;//左移一位,数字缩写10倍

            //举个例子
            // int digit=n%10; 19%10=9
            //sum=81
            //n=1
            //1%10=1
            //sum=1+81=82

        }
        return sum;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

元宇宙:数字化世界的下一个时代

元宇宙&#xff08;Metaverse&#xff09;概念是一个3D平台&#xff0c;作为用户可以参与不断成熟的虚拟世界&#xff0c;元宇宙应该被视为互联网发展的延续&#xff0c;以用户为中心。因为在这个三维虚拟平台上&#xff0c;我们都可以结识其他人、玩游戏、购物或工作。设想一个…

栈和队列的学习

存储方式分两类&#xff1a;顺序存储和链式存储 栈&#xff1a;只允许从一端进行数据插入和删除的线性表&#xff1a;先进后出 FILO 队列&#xff1a;只允许从一端进行数据插入&#xff0c;另一端进行数据删除的线性表&#xff1a;先进先出 FIFO 栈 创建空栈&#xff0c;创建…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

【skimage包如何安装】

【skimage包如何安装】 直接安装pip install scikit-image&#xff0c;而不是安装pip install skimage pip install scikit-image

【深度学习】基于机器学习的无机钙钛矿材料形成能预测,预测形成能,神经网络,回归问题

文章目录 任务分析数据处理处理离散数值处理缺失值处理不同范围的数据其他注意事项 我们的数据处理模型训练网页web代码、指导 任务分析 简单来说&#xff0c;就是一行就是一个样本&#xff0c;要用绿色的9个数值&#xff0c;预测出红色的那1个数值。 数据处理 在进行深度数…

从IO操作与多线程的思考到Redis-6.0

IO操作->线程阻塞->释放CPU资源->多线程技术提升CPU利用率 在没有涉及磁盘操作和网络请求的程序中&#xff0c;通常不会出现线程等待状态。线程等待状态通常是由于线程需要等待某些事件的发生&#xff0c;比如I/O操作完成、网络请求返回等。如果程序只是进行计算或者简…

低代码开发平台开源:依靠科技力量实现数字化转型!

在竞争激烈的当今社会&#xff0c;数字化转型、流程化办公等字眼早已充斥在我们的职场生活中。虽然如此&#xff0c;但是我们依然要面临着这样一个现实问题&#xff1a;很多中小企业发展面临着资源有限、技术储备不足、人才短缺的现实问题&#xff0c;进入流程化办公困境依然明…

JSP基础知识

前言&#xff1a;开发需要&#xff0c;有一个老项目&#xff0c;使用的是前后端不分离的框架&#xff0c;前端使用的JSP开发&#xff0c;于是需要恶补JSP的基础知识和语法。以下是学习过程总结的一些有用的基础知识。 推荐学习&#xff1a; JSP 语法 | 菜鸟教程 简介 Jsp是一…

Mybatis总结(持续补充),kafka和mq的区别面试

配置环境&#xff1a;需要引入Mybatis的一个jar包 然后写一个mybatis-config.xml的配置文件里面写着mybatis的核心配置文件&#xff0c;例如&#xff1a;连接的哪个数据库&#xff0c;资源文件的注册&#xff08;Mapper.xml等&#xff09; 书写一个MybatsiUtils工具类封装一个…

Monoxer Programming Contest 2024(AtCoder Beginner Contest 345)(A,B,C,D,E,F)

比赛链接 这场。。。好像已经是一周之前的比赛来着&#xff0c;终于补完了。 C是个披着字符串外衣的数学容斥题。D是个超级超级暴力的爆搜&#xff0c;写起来超级麻烦&#xff0c;感觉。。。真是一次酣畅淋漓的赤石。E是个DP&#xff0c;朴素想法其实比较直观&#xff0c;不过…

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好&#xff0c;我是淘小白~ 首先&#xff0c;感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新&#xff0c;此次版本更新修改增加了一些内容&#xff1a; 1、自定义多条指令&#xff0c;软件自动判断指令条数&#xff0c;进行输入 2、增加谷歌浏览多账号轮询&#xf…

了解Kafka位移自动提交的秘密:避免常见陷阱的方法

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 了解Kafka位移自动提交的秘密&#xff1a;避免常见陷阱的方法 前言位移自动提交简介自动提交的优缺点自动提交位移的优点&#xff1a;自动提交位移的缺点&#xff1a;自动提交与手动提交的对比分析&am…

vuex - 21年的笔记 - 后续更新

vuex是什么 Vuex是实现组件全局状态&#xff08;数据&#xff09;管理的一种机制&#xff0c;方便的实现组件之间的数据的共享 使用vuex统一管理状态的好处 能够在vuex中集中管理共享的数据&#xff0c;易于开发和后期维护能够高效地实现组件之间的数据共享&#xff0c;提高…

如何系统的入门大模型?

GPT图解&#xff0c;从0到1构建大模型。 本书将以生动活泼的笔触&#xff0c;将枯燥的技术细节化作轻松幽默的故事和缤纷多彩的图画&#xff0c;引领读者穿梭于不同技术的时空&#xff0c;见证自然语言处理技术的传承、演进与蜕变。在这场不断攀登技术新峰的奇妙之旅中&#xf…

数据安全运营:难点突破与构建策略全解析

小型企业关注基础安全运营&#xff0c;重点把安全产品“管好”和“用好”。大型企业通过SOC平台&#xff08;安全运营中心&#xff09;把所有安全产品串联起来&#xff0c;对大量的日志进行关联分析&#xff0c;发现事件和告警。通过SOAR平台把运营工作中能“自动化”内容进行预…

修改Linux系统时间与网络同步

文章目录 1、安装ntpdate2、修改时区3、设置系统时间与网络时间同步4、将系统时间写入硬件时间 1、安装ntpdate # Red Hat和Cent OS系统 sudo yum install ntpdate # 乌班图 sudo apt-get install ntpdate2、修改时区 1&#xff09;运行tzselect tzselect2&#xff09;选择A…

H4012耐压30V降压恒压芯片 30V降12V降5V 支持电流3A

耐压30V降压恒压芯片的工作原理如下&#xff1a; 该芯片内部集成了开关管和同步整流管&#xff0c;通过它们进行电压的转换&#xff0c;将输入的30V电压降至所需的输出电压&#xff08;如12V或5V&#xff09;。在工作过程中&#xff0c;该芯片通过PWM&#xff08;脉冲宽度调制…

一套键盘鼠标控制两台电脑 Mouse Without Borders

有两台电脑&#xff0c;一台笔记本一台台式机&#xff0c;拥有各自拥有鼠标和键盘&#xff0c;但总是需要切换&#xff0c;感觉太麻烦&#xff0c;想找个简单的方式&#xff0c;不需要额外操作就能同时操作这两台电脑。无意间发现了一个微软软件Mouse Without Borders&#xff…

项目起冲突,掌握这个模型的人,赢麻了!

在项目管理中&#xff0c;冲突是项目经理们无法避免的一环。在职场中&#xff0c;大家都是如何解决矛盾冲突的呢&#xff1f; 一、项目起冲突的原因及解决方法 项目管理过程中&#xff0c;冲突的产生&#xff0c;往往源自于多个方面&#xff0c;但无论是出于何种原因的项目冲…

#Linux(连接档概念)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;硬链接&#xff08;inode&#xff0c;建立硬链接的文件inode号相同&#xff09; &#xff08;2&#xff09;创建硬链接:ln 文件名1 文件名…