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

【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】

闲话系列:每日一题,秃头有我,Hello!!!!!,我是IF‘Maxue,欢迎大佬们来参观我写的蓝桥杯系列,我好久没有更新博客了,因为up猪我寒假用自己的劳动换了台新电脑,没用父母的钱哦!!!,虽然进度慢了,但是值得,蓝桥杯快开始了,所以我也开始努力起来了。同时,我也欢迎各位大佬互三,看到我会及时回复的!!!

放一张阿刃在这,除大家的霉运
在这里插入图片描述

文章目录

  • 题目解析
  • 算法原理解析
    • 具体解法
  • 代码实现

题目解析

在这里插入图片描述

  1. 搞懂定义
  • 对于一个正整数,每一次替换为它每个位置上的平方和。

  • 举例:

  • 在这里插入图片描述

    • 19这个数字经过处理可以变成1,2这个数字变成了无限循环,
    • 所以19是快乐数字,2就不是
    • 判断最后的那一个环是否都是一

算法原理解析

我们仔细观察,在最后的结尾,

  • 为快乐数的数字最后的结尾都是1,我们可以理解成一个园环。

  • 非快乐数的数字最后结尾我们知道,肯定不是1,但是因为鸽巢原理我们会得出结论肯定成环。(不知道也没关系,下面有详细解析)

  • 原理如图所示,上面的是快乐数,下面的数是非快乐数:
    原理图

  • 判断最后的环的数字是否都是1.

具体解法

  • 解法 快慢双指针。
    • 定义快慢指针 在这里插入图片描述> - 慢指针每次后移一步,快指针每次后移两步 让慢指针一次进行一次操作,让快指针进行2次快乐数操作
      - 判断相遇的值
      - 直接判断相遇的值
  • 鸽巢原理详解:
    • 我们可是让慢指针执行一次,然后对于快指针每一次后移进行执行快乐数的两次操作
      • 为什么这些数字不会一直铺开,为什么一定要成环?
        证明原理:鸽巢原理

      • 如果有n个巢,n+1个鸽子可以推论

      • 在这里插入图片描述

        证明这道题:

      • 一个数字2.1 * 10^9
        在这里插入图片描述

        • 我们已经知道n个巢穴,n+1个鸽子,如果鸽子全部归位,至少有一个巢穴里面的鸽子大于1.

        • 我们拿出9999999999这个数字,进行快乐数操作,

        • 范围将会锁定在【1,810(9^2 * 10)】(这个就是巢穴),我们进行811次快乐数字操作(这个就是鸽子)

代码实现

int HappyC(int n)//快乐数的操作

{   int x=0;

int sum=0;

  while(n)

    {

    x=n%10;

    sum=x*x+sum;

    n=n/10;

    }

    return sum;

}

  

bool isHappy(int n) {

    //定义两个快慢指针,用数字代替

        int fast=0;

        int slow=0;

     slow=n,fast=n;

  while(1)

  {

    fast=HappyC(fast);

    fast=HappyC(fast);

    slow=HappyC(slow);

    if(fast==slow)

    {

        if(fast==1)

        {

            return true;

        }

        else

        {

            return false;

        }

    }

  }

  

}

运行结果展示:
在这里插入图片描述

原文地址:https://blog.csdn.net/wheeldown/article/details/146078005
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/576191.html

相关文章:

  • 初识Qt · 信号与槽 · 基础知识
  • K8s 1.27.1 实战系列(四)验证集群及应用部署测试
  • Redis 中配置账号密码是通过设置 `requirepass` 参数来实现
  • 解决VMWare无法打开虚拟机——内部错误
  • NewStar CTF week3 web wp
  • 【算法系列】桶排序算法介绍及实现
  • 永洪科技深度分析实战,零售企业的销量预测
  • MySQL 数据目录迁移导致启动失败
  • 【前端基础】Day 10 CSS3-2D3D
  • VSCode SSH中删除指定IP的方法
  • MySQL : 数据库和表操作
  • LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)
  • PDFelement Pro v11.4.8.3352 万兴PDF国际解锁版 下载
  • 大模型在垂直行业的落地实践:从通用到定制化的技术跃迁
  • 【GoTeams】-4:为项目引入etcd
  • 爬虫代理技术深度解析:从原理到实战应用
  • vue3,Element Plus中抽屉el-drawer的样式设置
  • Jenkins 自动打包java项目镜像部署到服务器
  • 【Manus】AI 代理人正式上岗-附Manus邀请码限时通道
  • 深度学习——Tensor