Java【手撕双指针】LeetCode 202. “快乐数“, 图文详解思路分析 + 代码

news2024/11/27 9:23:46

文章目录

  • 前言
  • 一、快乐数
    • 1, 题目
    • 2, 思路分析
    • 3, 代码展示


前言

各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:
📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等
📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等
📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)

一、快乐数

1, 题目

OJ链接

题目给定的数字有两种结果 : 要么变成 1, 要么变成 无限循环但不会变成 1, 无论那种情况, 数字的变换的过程都会成一个环


2, 思路分析

根据题目示例, 有以下两种情况 : 在这里插入图片描述

无论如何, 都会成环, (如果最终变成 1, 可以认为是任意多个 1 在环中)那么题目要求就可以认为是 : 如果环中的数是1, 则返回 true, 否则返回 false

那么这题就可以利用 判断链表是否有环 这道题的思想, 使用快慢双指针, 慢指针每次走一步, 快指针每次走两步, 如果有环, 快慢指针必定会相遇(本题已经说明了一定有环, 那么快慢指针一定会相遇), 当快慢指针相遇时, 判断指针的值是否为 1 即可

在这里插入图片描述

题目只给定了一个数, 并没有给出像上图中画出来的那么都数组成的"集合", 灵活点, 慢指针走一步就可以相当于变化一次, 快指针每走一步就相当于变化两次即可

为什么无论如何一定会有环? 其实是鸽巢原理, 感兴趣可以深入研究, 这里不再赘述


3, 代码展示

	public boolean isHappy(int n) {
        // slow 每次变化一次 fast每次变化两次
        int slow = change(n);
        int fast = change(n);
        fast = change(fast);
        while(slow != fast) {
            slow = change(slow);
            fast = change(fast);
            fast = change(fast);
        }
        return slow == 1;
    }

    // 替换操作
    public  int change(int n){
        int resault = 0;
        while(n > 9) {
            int tmp = n % 10;
            resault += tmp * tmp;
            n = n / 10; 
        }
        resault += n * n;
        return resault;
    }   

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

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

相关文章

Ubuntu系列弹性云服务器如何安装图形化界面?

​ 参考链接:Ubuntu系列弹性云服务器如何安装图形化界面? 操作场景 为了提供纯净的弹性云服务器系统给客户,Ubuntu系列弹性云服务器默认未安装图形化界面,如果您需要使用图形化界面,请参见本节内容进行安装。 对于GPU加…

Python支持下最新Noah-MP陆面模式站点与区域数据的处理、单站和区域的模拟、模拟结果的输出和后续分析及可视化

目录 Noah-MP 5.0模型介绍&模型所需环境的搭建 Python教程 Noah-MP 5.0模型站点模拟 Noah-MP 5.0模型区域模拟 更多应用 熟悉陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用;深入理解Noah-MP 5.0模型的原理,掌握Noah-MP模型&…

Video-LLaMA

文章目录 链接主要贡献模型一些思考啥是Q-former为什么position embedding可以辅助学到temporal的信息 代码视觉处理 一些惊喜 链接 https://github.com/DAMO-NLP-SG/Video-LLaMA 主要贡献 能够捕捉到一小小短时间(temporal)里视觉的变化 - 使用了Q-f…

“卷王”新茶饮们:从风口,卷到了十字路口

【潮汐商业评论/原创】 “楼下奈雪开业了,扫码9块9就可以喝到杨枝甘露,这也太便宜了,”Chloe向同事说道。 “上次跟Fendi联名的喜茶,两杯也只要38元。” “喜茶奈雪开始向二线价格靠拢?怎么都那么便宜了&#xff1f…

【一对一学习小组】2023年有三AI-CV初阶-基础算法组发布,如何夯实深度学习图像识别算法理论基础与实践...

2023年有三AI-CV初阶-基础算法组正式发布!有三AI已经推出了CV初-中-高级培养计划(原名有三AI-CV季划),这是我们的终身计算机视觉学习小组。 该培养计划具有以下特点: 【系统性】配套有非常完备的理论与实践 【永久性】…

jacaScript的详解与使用2

javaScript详解与使用2 Window.open()和location对象在HTML中我们一般使用的是a标签进行页面的跳转 而在js中也有自己的跳转页面的方式 window.open() 里面可以传递参数 在跳转的页面使用location对象进行接收 面象对象什么是面向对象1.面向对象是一种编程思想 简称为oop&#…

Qt快速学习(二)--QMainWindow,对话框,布局管理器,常用控件

目录 1 QMainWindow 1.1 菜单栏 1.2 工具栏 1.3 状态栏 1.4 铆接部件 1.5 核心部件(中心部件) 1.6 资源文件 2 对话框QDialog 2.1 基本概念 2.2 标准对话框 2.3 自定义消息框 2.4 消息对话框 2.5 标准文件对话框 3 布局管理器 3.1 系统…

华为OD机试 - 数字颠倒(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、Java算法源码投机取巧七、效果展示 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&am…

回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)效果…

链表的顶级理解

目录 1.链表的概念及结构 2.链表的分类 单向或者双向 带头或者不带头 循环或者非循环 3.无头单向非循环链表的实现 3.1创建单链表 3.2遍历链表 3.3得到单链表的长度 3.4查找是否包含关键字 3.5头插法 3.6尾插法 3.7任意位置插入 3.8删除第一次出现关键字为key的节点 …

ROS2与ROS1通信

文章目录 准备工作通信包安装启动ros1_bridge在ROS1中启动相机节点在ROS2中查看ROS1话题 准备工作 本机系统20.04 ROS2-foxyROS1-noetic 两个版本的ROS 均需要按照官网教程进行安装,安装完成以后,source环境变量都不放到~/.bashrc文件里面 通信包安装…

MES管理系统和MOM系统哪个更适合中小企业

中小型制造企业需要在选择制造管理系统前进行充分的需求分析和系统评估,结合企业的战略目标和资源状况来做出决策。MES和MOM系统是两种常见的制造管理系统,它们都能够帮助企业提高生产效率、降低生产成本,实现持续发展。然而,MES管…

模糊测试面面观 | 模糊测试对软件质量和性能的影响

随着软件行业的几十年发展和数字化转型的加快,我国已经度过了软件行业的野蛮发展时代。用户对软件的质量和性能要求越来越高,已经成为企业成功与否的至关重要条件。然而,随着软件规模的扩大和黑客攻击方式的多样化,保障软件的安全…

【kubernetes】Helm

什么是 Helm 每个成功的软件平台都有一个优秀的打包系统,比如Debian、Ubuntu 的 apt,RedHat、CentOS 的 yum。Helm 则是 Kubernetes上 的包管理器,方便我们更好的管理应用。 在没使用 helm 之前,向 kubernetes 部署应用&#xf…

昌硕科技、世硕电子同步上线法大大电子合同

近日,世界500强企业和硕联合旗下上海昌硕科技有限公司(以下简称“昌硕科技”)、世硕电子(昆山)有限公司(以下简称“世硕电子”)的电子签项目正式上线。上线仪式在上海浦东和硕集团科研大楼举行&…

VSCode如何为远程安装预设(固定)扩展

背景 在使用VSCode进行远程开发时(python开发之远程开发工具选择_CodingInCV的博客-CSDN博客),特别是远程的机器经常变化时(如机器来源于动态分配),每次连接新的远程时,都不得不手动安装一些开…

操作系统-笔记-第四章-文件管理

目录 四、第四章——文件管理 1、文件管理——基础概念 (1)文件结构 (2)操作系统提供的接口 (3)总结 2、文件的逻辑结构 (1)有结构文件(类似SQL表文件&#xff09…

数据分析案例丨商品零售购物篮分析(下)

数据分析案例丨商品零售购物篮分析(上) 03 数据预处理 通过对数据探索分析,发现数据数据完整,并不存在缺失值。建模之前需要转变数据的格式,才能使用apriori函数进行关联分析。对数据进行转换,如代码清单…

TIA博途中的数据类型基本介绍

TIA博途中的数据类型基本介绍 基本数据类型 Bool 布尔 FALSE 或TRUE 举例: I0.0 Q0.2 M100.0 DB0.DBX2.5 Byte 字节 二进制:2#0000 0000 到2#1111 1111 无符号整数:0到255 有符号整数:-128到127 十六进制:16#00到16#FF 举例: IB2 MB100 DB1.DBB2 Word 字 二进制:2#0000 …

钉钉公布AI版本商业定价,调用一次大模型不到5分钱

8月22日,在2023年钉钉生态大会上,钉钉总裁叶军公布了钉钉全面智能化的最新进展:已有17条产品线、55个场景全面接入大模型,完成智能化再造;钉钉同时面向生态伙伴和客户开放智能化底座AI PaaS,表示将用大模型…