Leetcode面试经典150题-202.快乐数

news2025/1/11 16:54:05

题目比较简单,重点是理解思想

解法都在代码里,不懂就留言或者私信

面试的时候可以用我提交的解法,这个更优

class Solution {
    /**第一种-常规解法,主要的思想是如果出现了循环或者等于1,计算过程就停止
    如果等于1,说明是快乐术,否则就是出现了循环 */
    public boolean isHappy2(int n) {
        if(n == 1) {
            return true;
        }
        /**我们用一个HashSet保存曾经出现过的数 */
        Set<Integer> set = new HashSet<>();
        int sum = n;
        while(sum != 1 && !set.contains(sum)) {
            /**注意这一句要放在最前面,因为下面sum马上要改变了,如果不放第一个,有可能初始sum会被忽略 */
            set.add(sum);
            /**记录当前数所有位的平方和 */
            int curSum = 0;
            /**取每一位的平方相加 */
            while(sum != 0) {
                int curNum = sum % 10;
                curSum += curNum * curNum;
                sum = sum / 10;
            }
            /**赋值给sum进行之后的计算 */
            sum = curSum;
        }
        /**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */
        return sum == 1;
    }

    /**第二种-找规律贪心,列举出一堆数后你会发现,只要sum不出现4就不会死循环,出现了1
    就可以结束,我们就可以把循环条件变成sum != 1&& sum !=4
    这个解法就不用set来记录了 */
    public boolean isHappy(int n) {
        if(n == 1) {
            return true;
        }
        /**我们用一个HashSet保存曾经出现过的数 */
        int sum = n;
        while(sum != 1 && sum != 4) {
            /**记录当前数所有位的平方和 */
            int curSum = 0;
            /**取每一位的平方相加 */
            while(sum != 0) {
                int curNum = sum % 10;
                curSum += curNum * curNum;
                sum = sum / 10;
            }
            /**赋值给sum进行之后的计算 */
            sum = curSum;
        }
        /**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */
        return sum == 1;
    }
}

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

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

相关文章

ClassLoader中各个字段意思

ClassLoader&#xff08;类加载器&#xff09;是JVM&#xff08;Java虚拟机&#xff09;中一个非常重要的组件&#xff0c;它主要负责将Java类文件&#xff08;.class文件&#xff09;加载到JVM的内存中&#xff0c;并对其进行验证、准备、解析和初始化。ClassLoader中的字段就…

vue3+ant design vue动态实现级联菜单~

1、这里使用的是ant design vue 的TreeSelect 树选择来实现的。 <a-form-item name"staffDept" label"责任部门" labelAlign"left"><a-tree-selectv-model:value"formState.staffDept"show-search//允许在下拉框中添加搜索框…

零基础上手WebGIS+智慧校园实例(长期更新#2)【html by js】

请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 等下再更新一下1. WebGIS矢量图形的绘制&#xff08;超级详细&#xff01;&#xff01;&#xff09;&#xff0c;2. WebGIS计算距离&#xff0c; 以及智慧校园实例 with 3个例子&#xff01;&#xff01;…

Android中多进程通信有几种方式?需要注意哪些问题?

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 在Android中&#xff0c;多进程通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是指不同进程之间进行数据交换和协同…

Unity 使用Spine动画切换时有残影

问题描述&#xff1a; 最近在用spine动画时发现&#xff0c;有时候切换动画的时候会显示一个动画残影很影响体验 所以找了半天才找到解决方案 解决办法 在Unity的Project下找到Spine动画的SkeletonData文件&#xff0c;选中该文件之后在Inspector面板上找到Animationgs下面…

51单片机+proteus仿真+基本实验学习1(跑马灯、独立按键和数码管)

目录 1.实验一跑马灯 1.1代码的生成 1.1.151单片机的延时函数的生成 1.1.251单片机的流水灯代码编写 1.2仿真框图 2.实验二I/O独立按键 2.1基本概念 2.1.1按键所需的基本知识 2.2代码的生成 2.2.1头文件定义的代码 2.2.2 执行代码 2.3仿真图 ​3实验三数码管 3.1基…

多线程与并发区别

在Java中&#xff0c;多线程与并发是两个既相关又有所区别的概念。我们可以这样来理解它们&#xff1a; 多线程&#xff08;Multi-threading&#xff09;&#xff1a; 多线程是指程序能够同时执行多个线程。每个线程都是一个独立的执行流&#xff0c;它们共享程序的内存空间&a…

Kafka 中消息保留策略详解

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Java笔记 3 ch03_variable

第3章 变量 程序中号的使用 数据类型 整数类型 整型的类型 整型的使用细节IntDetail.java 浮点类型 浮点型的分类 浮点型使用细节FloatDetail.java Java API 文档 字符类型(char) 字符类型使用细节 字符本质探讨 布尔类型&#xff1a;boolean 基本数据类型转换 自动类型转换 自…

【机器学习】迁移学习的实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 迁移学习的实践迁移学习的常见框架1. 特征提取器微调(Fine-tuning the Feature …

✨机器学习笔记(三)—— 多元线性回归、特征缩放、Scikit-Learn

Course1-Week2: https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Supervised%20Machine%20Learning%20Regression%20and%20Classification/week2机器学习笔记&#xff08;三&#xff09; 1️⃣多元线性回归及矢量化2️⃣特征缩放&#xff08;Featur…

JSON对接发送短信验证码怎么获取状态报告

现在很多网站的用户注册都会加一个短信验证功能&#xff0c;也就是需要用户填写手机号&#xff0c;然后点击“获取短信验证码”&#xff0c;将收到的短信验证码输入验证通过后方能进行下一步完成注册&#xff0c;现在短信验证码被广泛应用于网站用户注册&#xff0c;还被广泛应…

向量空间与函数空间的类比分析

目录 基与向量空间基本概念向量空间的基向量空间中的表示系数计算步骤二维空间中的向量 向量在不同基下的表示 基与函数空间基本概念常见的函数基 两者之间的关系相同点不同点 基与向量空间 基本概念 向量空间&#xff1a;一个向量空间是由一组遵循特定加法和数乘运算规则的元…

sqlgun新闻管理系统

一&#xff0c;打开主页 1.输入框测试回显点 -1union select 1,2,3# 出现回显点2 2.查看数据库表名 -1union select 1,database(),3# 3.查看表名 -1union select 1,2,group_concat(table_name) from information_schema.tables where table_schemasqlgunnews# 4.查看admin中…

CSS---序号使用css设置,counter-reset、counter-increment、content配合实现备注文案的序号展示

直接上代码&#xff0c;全代码copy即可使用! <template><div class"reminder"><span class"Bold_12_body" style"line-height: 8vw">温馨提示&#xff1a;</span><br /><div class"rule-container"…

NLP-transformer学习:(6)dataset 加载与调用

NLP-transformer学习&#xff1a;&#xff08;6&#xff09;dataset 加载与调用 平常其实也经常进行trainning等等&#xff0c;但是觉得还是觉得要补补基础&#xff0c;所以静下心&#xff0c;搞搞基础联系 本章节基于 NLP-transformer学习&#xff1a;&#xff08;5&#xff0…

【AI-19】Adam为什么会过拟合

Adam 算法可能会导致过拟合的原因主要有以下几点&#xff1a; 过拟合和欠拟合的概念 过拟合&#xff1a; 就好比一个学生在准备考试时&#xff0c;把课本上的每一个例子都背得滚瓜烂熟&#xff0c;但是考试的时候题目稍微变一下&#xff0c;他就不会做了。 在机器学习中&#…

tomcat项目报错org.apache.jasper.JasperException: java.lang.NullPointerException

现象&#xff1a; 访问tomcat项目报错&#xff0c;查看tomcat日志有报错 Sep 12, 2024 5:15:59 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception java.lang.NullPointerExce…

【linux006】目录操作命令篇 - pwd 命令

文章目录 1、基本用法2、常见选项3、举例4、注意事项 pwd命令在 Linux 中用于显示当前工作目录的绝对路径。它是一个非常基础且常用的命令&#xff0c;帮助用户确认自己在文件系统中的位置。 1、基本用法 pwd [选项]2、常见选项 -L&#xff08;逻辑路径&#xff09;&#xff…

实现LED流水灯效果 -(附代码和仿真)

流水灯程序分为三个模块&#xff08;顶层&#xff0c;流水灯控制模块&#xff0c;时钟分频模块&#xff09;&#xff1b; 流水灯程序有三个输入&#xff08;时钟&#xff0c;复位信号&#xff0c;控制开关&#xff09;&#xff0c;一个输出&#xff08;16位led灯&#xff09;实…