当前位置:网站首页>快乐数[环类问题之快慢指针]
快乐数[环类问题之快慢指针]
2022-07-01 21:45:00 【REN_林森】
前言
分析题意,出现死循环相关问题,则属于环类问题,需用紧密联系的知识点快慢指针解决。保持快慢指针对环问题/死循环问题的敏感性。
一、快乐数

二、快慢指针
package everyday.doublePoint;
// 快乐数
public class IsHappy {
/* target:将一个数变成另一个数,按照一条固定的路径变下去,变到1就是快乐数,进入死循环就是非块乐数。 这就类似一个路径可能有环,可能无环。 最关键的地方在于判定是否有环,无环则是快乐数,有环则是非快乐数。 最直观的想法就是hash记录。 但是对于环问题,和其紧密关联的知识点就是快慢指针,如果快慢指针相碰,则有环,否则快指针走到末尾。 */
public boolean isHappy(int n) {
// 初始化快慢指针位置,快的在前,慢的再后。
int fast = getNext(n), slow = n;
// 一快一慢开始寻找。
while (fast != 1 && fast != slow) {
// fast走两步,slow走一步,要是有环必相碰,否则fast走到末尾的1.
fast = getNext(getNext(fast));
slow = getNext(slow);
}
// 看看是因为环结束,还是因为fast走到末尾结束。
return 1 == fast;
}
private int getNext(int n) {
int sum = 0;
while (n > 0) {
int mod = n % 10;
sum += mod * mod;
// 更新n
n /= 10;
}
return sum;
}
}
总结
1)保持快慢指针对环问题/死循环问题的敏感性。
参考文献
[1] LeetCode 快乐数
边栏推荐
- String类型转换BigDecimal、Date类型
- Sonic云真机学习总结6 - 1.4.1服务端、agent端部署
- One of the basic learning of function
- plantuml介绍与使用
- 多种智能指针
- 微软、哥伦比亚大学|GODEL:目标导向对话的大规模预训练
- 使用闭包实现点击按钮切换 toggle
- 灵动微 MM32 多路ADC-DMA配置
- 辅音和声母的区别?(声母与辅音的区别)
- Wechat applet, continuously playing multiple videos. Synthesize the appearance of a video and customize the video progress bar
猜你喜欢

【juc学习之路第9天】屏障衍生工具

指标陷阱:IT领导者易犯的七个KPI错误

MySQL series transaction log redo log learning notes

Flume interview questions

Icml2022 | interventional contrastive learning based on meta semantic regularization
Design and practice of new generation cloud native database

并发编程系列之FutureTask源码学习笔记

Introduction and download of the latest version of airserver2022

【MySQL】explain的基本使用以及各列的作用

Mask wearing detection method based on yolov5
随机推荐
A debugging to understand the slot mechanism of redis cluster
I received a letter from CTO inviting me to interview machine learning engineer
Sonic cloud real machine learning summary 6 - 1.4.1 server and agent deployment
Unity uses SQLite
Mask wearing detection method based on yolov5
详解LockSupport的使用
Chapter 9 Yunji datacanvas company has been ranked top 3 in China's machine learning platform market
IDA动态调试apk
【juc学习之路第8天】Condition
BlocProvider 为什么感觉和 Provider 很相似?
黑马程序员-软件测试--06阶段2-linux和数据库-01-08第一章-linux操作系统阶段内容说明,linux命令基本格式以及常见形式的说明,操作系统的常见的分类,查看命令帮助信息方法,
完全注解的ssm框架搭建
Make a three digit number of all daffodils "recommended collection"
比较版本号[双指针截取自己想要的字串]
Smart micro mm32 multi-channel adc-dma configuration
QT 使用FFmpeg4将argb的Qimage转换成YUV422P
Basic operation of binary tree
Interview question: what is the difference between MySQL's Union all and union, and how many join methods MySQL has (Alibaba interview question) [easy to understand]
#yyds干货盘点# 解决名企真题:扭蛋机
【单体】流辰信息I-BPSv3服务器推荐配置