博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leecode202. 快乐数
阅读量:3908 次
发布时间:2019-05-23

本文共 812 字,大约阅读时间需要 2 分钟。

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。

如果 n 是快乐数就返回 True ;不是,则返回 False 。

在这里插入图片描述

解题思路:用快慢指针可以解决这种问题,定义一个求一个数每个位数上的数字的平方和的函数,然后慢指针接收快指针的结果,快指针每次不断的根据题目要求求它下一个需要求的算数和,这样最后如果快指针和慢指针相同了,每个数字都会根据 各位平方和 指向另一个数字,所以从任意数字开始进行 各位平方和 的迭代操作,就相当于在链表上游走。如果**无限循环 **但始终变不到 1,那说明肯定是链表游走到了环。

public class Solution {
public int squareSum(int n) {
int sum = 0; while(n > 0){
int digit = n % 10; sum += digit * digit; n /= 10; } return sum; } public boolean isHappy(int n) {
int slow = n, fast = squareSum(n); while (slow != fast){
slow = squareSum(slow); fast = squareSum(squareSum(fast)); }; return slow == 1; }}

转载地址:http://lhurn.baihongyu.com/

你可能感兴趣的文章
细思极恐——你真的会写Java吗?
查看>>
Java并发面试,幸亏有点道行,不然又被忽悠了
查看>>
Java基础面试题收集整理
查看>>
SpringBoot基础篇Bean之条件注入@Condition使用姿势
查看>>
让你秒懂线程和线程安全,只需5步!
查看>>
Spring Boot学习之Logback和Log4j2集成与日志发展史
查看>>
Java注解(annotation)机制
查看>>
volatile关键字全面解析
查看>>
Java如何实现哈夫曼编码
查看>>
从源代码的角度理解Java设计模式的装饰模式
查看>>
系统架构中为什么要引入消息中间件?
查看>>
Java内存模型详解
查看>>
Java NIO之Selector
查看>>
SLF4J源码解析(一)
查看>>
Spring AOP用法详解
查看>>
记一位朋友斩获BAT技术专家Offer的面试经历
查看>>
Java并发编程之阻塞队列与Fork/Join框架
查看>>
并发、并行傻傻分不清楚?
查看>>
一个Java程序员该有的良好品质
查看>>
程序员创业之如何获取第一笔风险投资
查看>>