当前位置: 首页 > article >正文

【OJ刷题】快慢指针问题

这里是阿川的博客,祝您变得更强

✨ 个人主页:在线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;
    }
    // 判断设置快慢指针,并判断相遇是否为1
    bool 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.kler.cn/news/307151.html

相关文章:

  • ARM驱动学习之基础小知识
  • Windows环境本地部署Oracle 19c及卸载实操手册
  • STL-vector练习题
  • 【2025届华为秋招机考三道编程题之一】华为校招留学生软件开发工程师-真题机考笔试/(200分)- 跳格子3(Java JS Python C)
  • 【C++】模板进阶:深入解析模板特化
  • 【数据库】MySQL内置函数
  • Args4j:Java命令行参数解析的利器
  • Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 死亡对象判断方法
  • uniapp自定义导航栏以及页面加背景
  • CSP-J算法基础 计数排序
  • mis_table.cs 与 csharp_mis_table.h
  • Oracle(121)如何进行数据文件的恢复?
  • Linux中使用Docker构建Nginx容器完整教程
  • k8s使用本地docker私服启动自制的flink集群
  • OKHttp实现原理分享
  • vue3 指定元素全屏 screenfull(可直接粘贴使用)
  • 《凡人歌》:网络安全组电话响3声必须接,安全组长被压迫患得惊恐症、抑郁症
  • HTTP跨域请求时为什么要发送options请求
  • 【LLMs对抗性提示:提示泄漏、非法行为、DAN、Waluigi效应、 游戏模拟器、防御策略————】
  • JSON教程
  • 聪明办法学 Python 第二版.1.学习安排
  • vue3项目实现全局国际化
  • 深入理解C++中的std::string::substr成员函数:子串操作的艺术
  • 增强LinkedList实现瑞士轮赛制编排
  • C++课程笔记 类和对象
  • Android JobScheduler介绍
  • 介绍一些免费 的 html 5模版网站 和配色 网站
  • Spring的核心思想
  • Linux常用命令以及操作技巧
  • 数据库之索引<保姆级文章>