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

快乐数(双指针解法)

题目链接202. 快乐数 - 力扣(LeetCode)

题目拆解

1 取一个正整数每一位的平方和为,如果为1那么直接可以判定为快乐数,如果不为1,就重复这个过程,直到出现1

2 实际上,这道题只有两种情况,并且两种情况都会出现循环,1不管怎么重复操作的得到的都是1,各位数2不管怎么操作还是2,不存在无限循环的不同个体

3 所以我们这里可以很自然的就联想到快慢指针来找循环的方法,相遇的时候刚好是进入循环的时候

解题步骤

1 可以先包装平方和的操作,方便主函数中直接调用

2 接着写函数主体,先设置初始值,slow指=指针指向第一位,fast指针指向第二位,接着让slow指针调用一次sum函数,相当于走一步;让fast指针调用两次sum,相当于走两步

3 最后根据相遇的时候二者的值就可以直接返回了

class Solution {
public:
int sum(int n)
{int sum=0;//返回平方和之后的数while(n>0){int m=n%10;sum+=m*m;n/=10;}return sum;
}bool isHappy(int n){int slow=n;int fast=sum(n);while(fast!=slow)//相遇的时候进入循环{slow=sum(slow);fast=sum(sum(fast));}//都为1的时候说明为快乐数return slow==1;}
};

http://www.xdnf.cn/news/2707.html

相关文章:

  • 1.57g 五一优选 = 雨晨 26100.3915 Windows 11 IoT 企业版 LTSC 2025 极速版(轻)
  • Flutter 学习之旅 之 flutter 作为 module ,在 Android 的界面中嵌入Flutter界面功能的简单整理
  • 【JAVAFX】controller中反射调用@FXML的点击事件失败
  • el-table 自定义列、自定义数据
  • 【学习笔记】RL4LLM(三)
  • 【设计模式】GOF概括
  • 拖动banner图,解决点击冲突问题
  • web3.js 和 ethers.js 的核心区别
  • c++11: 类型转换
  • dummy cli-tool ubuntu22.04使用
  • 在 Git 中,撤销(回退)merge 操作有多种方法
  • terraform 动态块(Dynamic Blocks)详解与实践
  • [Python开发] 如何用 VSCode 编写和管理 Python 项目(从 PyCharm 转向)
  • Java面试:Spring及Spring Cloud技术深度剖析
  • docker安装部署TDengine实现主从复制
  • 雷池WAF的身份认证 - GitHub
  • <uniapp><插件><UTS>在uniapp中,创建自己的插件并发布到uni插件市场
  • JavaScript-基础语法
  • 「Mac畅玩AIGC与多模态05」部署篇03 - 在 Mac 上部署本地向量化模型(Embedding Models)
  • 在QGraphicsView中精确地以鼠标为锚缩放图片
  • 迈瑞医疗一季度业绩环比大幅改善 国内业务将从今年三季度迎来重大拐点
  • 用Java模拟打字:深入解析 java.awt.Robot 的键盘控制艺术
  • 【Robocorp实战指南】Python驱动的开源RPA框架
  • 【Vue3-Bug】中路由加载页面直接显示空白
  • 【面经分享】长鑫存储Java研发一面|40分钟速战速决
  • python_股票月数据趋势判断
  • HTML标记语言_@拉钩教育
  • leetcode0230. 二叉搜索树中第 K 小的元素-medium
  • C++?模板!!!
  • ai环境cuda cudnn conda torch整体迁移 wsl docker