【OJ刷题】快慢指针问题

devtools/2025/1/16 0:55:00/
这里是阿川的博客,祝您变得更强

✨ 个人主页:在线OJ的阿川
💖文章专栏:OJ刷题入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


在这里插入图片描述

在这里插入图片描述

目录

  • 1. 题目介绍
  • 2. 题目拆解
  • 3. 具体详情
  • 4. 具体代码


1. 题目介绍

难度:易
题目练习:快乐数
题目信息:编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:

  • 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
  • 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
  • 如果这个过程 结果为 1,那么这个数就是快乐数。
  • 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

举个例子: 具体如图1所示
在这里插入图片描述

图1 举个例子

2. 题目拆解

本质上:判断是否有环
特点是:环形循环,若是快乐数循环为1;若是无限循环则不会出现1
解决方法:快慢指针算法,如图2所示
在这里插入图片描述

图2 快慢指针

3. 具体详情

1.定义快慢指针
2. 慢指针每次向后移动一步快指针每次向右移动两步
3.判断相遇的时候的值即可


4. 具体代码

class Solution {
public:// 计算n的每个位置上的数字平方和int square_sum(int n){int sum = 0;while(n){int k = n % 10;sum += k*k;n /= 10;}return sum;}// 判断设置快慢指针,并判断相遇是否为1bool isHappy(int n) {int slow = n, fast = square_sum(n);while(slow != fast){slow = square_sum(slow);fast = square_sum(square_sum(fast));}return slow == 1;}
};

5. 夹带私货

若你能看到看到这篇文章且能看到这,则说明你我有缘留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强


好的,到此为止啦,祝您变得更强
在这里插入图片描述

在这里插入图片描述

道阻且长 行则将至

个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述


http://www.ppmy.cn/devtools/111920.html

相关文章

PHP高效协同无缝对接一站式生产管理系统小程序源码

​高效协同,无缝对接 —— 一站式生产管理系统的魅力 🚀 开篇:生产管理的革新之旅 在快节奏的现代工业生产中,每一个环节的顺畅与高效都至关重要。你是否曾为部门间的信息孤岛而烦恼?是否渴望一个能够统筹全局、高效协…

1-19 平滑处理——双边滤波 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 cv2.bilateralFilter函数用于对图像进行双边滤波。双边滤波是一种保持边缘的平滑技术,常用于图像去噪声和增强图像的细节。函数的四个参数如下: 三、运行现象 四、完整工程贴出 一、提前准备 1、树莓派4B 及 64位系统…

【机器人工具箱Robotics Toolbox开发笔记(十八)】SCARA机器人的gui界面:正运动学仿真实例

本文通过机器人工具箱实现SCARA机器人的GUI界面以进行正运动学分析,主要涉及到MATLAB的Robotics Toolbox以及GUI工具箱的使用。以下是一个概括性的步骤和要点说明: matlab仿真代码(附详细注释): clc% D-H参数:d0165;…

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性,它是ES11(ES2020)中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时,会短路,直接返回undefined,如果存在,那么…

开源多场景问答社区论坛Apache Answer本地部署并发布至公网使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

QT——事件处理机制(9.10)

用C写个闹钟 要求一个标签类显示时间&#xff0c;一个行编辑类输入闹钟时间&#xff0c;两个按钮组件分别控制启动和取消。 1.头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器类 #include <QTime…

webpack5 创建多页面应用配置

简单版webpack创建多页面应用&#xff0c;只要把配置文件复制下来&#xff0c;然后npm安装相应插件&#xff0c;正常是能跑起来了 创建 初始化 npm init生成package.json文件安装webpack npm i -D webpack webpack-cli webpack-dev-server创建main.js入口文件和webpack.config…

企业客户|基于springboot的企业客户管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统&#x…