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

embedded/2025/3/11 5:39:48/

闲话系列:每日一题,秃头有我,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;}}}}

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


http://www.ppmy.cn/embedded/171684.html

相关文章

爬虫逆向:脱壳工具反射大师的使用详解

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. 反射大师介绍1.1 反射大师简介1.2 反射大师支持场景1.3 反射大师优点1.4 使用方法1.5 其它功能2. 反射大师的安装与使用2.1 安装反射大师2.2 使用反射大师脱壳3. 脱壳后的 Dex 文件分析3.1 使用 JADX 反编译 Dex 文件…

pytorch3d学习(二)——安装与纹理显示demo测试

文章目录 零、安装一、渲染0. 导入模块1. 加载网格和纹理文件零、安装 参考了这篇文章:Pytorch3D Linux环境下安装(踩坑)记录 经历了红框子里面的步骤,然后测试一下官方给的代码,尝试一些 3D 算子,例如计算两个网格之间的倒角损失: from pytorch3d.utils import ico_s…

计算机视觉|Swin Transformer:视觉 Transformer 的新方向

一、引言 在计算机视觉领域的发展历程中,卷积神经网络(CNN) 长期占据主导地位。从早期的 LeNet 到后来的 AlexNet、VGGNet、ResNet 等,CNN 在图像分类、目标检测、语义分割等任务中取得了显著成果。然而,CNN 在捕捉全…

vue3的npm配置修改源

要修改 Vue3 项目中 npm 的源配置,可以按照以下步骤操作: 检查当前 npm 源: 打开终端,输入以下命令查看当前的 npm 源地址: npm config get registry设置新的 npm 源: 如果需要更换为国内的镜像源&#xff…

本地部署项目记录【deepseek、QWQ】

1-DeepSeek 参考:【Deepseek】Linux 本地部署 Deepseek_linux部署deepseek-CSDN博客 问题: (base) rootQiuKu_303:~/Documents/Ollama# sh ollama_install.sh >>> Cleaning up old version at /usr/local/lib/ollama >>> Installing …

MyBatis-Plus 与 Spring Boot 的最佳实践

在现代 Java 开发中,MyBatis-Plus 和 Spring Boot 的结合已经成为了一种非常流行的技术栈。MyBatis-Plus 是 MyBatis 的增强工具,提供了许多便捷的功能,而 Spring Boot 则简化了 Spring 应用的开发流程。本文将探讨如何将 MyBatis-Plus 与 Spring Boot 进行整合,并分享一些…

WPF基础知识61-80

数据访问与处理 61.如何在 WPF 应用程序中使用 ADO.NET 进行数据库访问? 答案:首先需要引用 System.Data.SqlClient(针对 SQL Server 数据库,若为其他数据库需引用相应的库)。然后创建数据库连接对象,根据…

MySQL优化系列13-MySQL8.0 表连接方法简介

备注:测试数据库版本为MySQL 8.0 一. Nested Loop Join算法 1.1 普通的Nested Loop Join算法 将外层表的结果集作为循环的基础数据,然后循环从该结果集每次一条获取数据作为下一个表的过滤条件去查询数据,然后合并结果。如果有多个表join,那么…