算法:3.快乐数

202. 快乐数 - 力扣(LeetCode)

双指针

解法思路:如图

根据如图原理,我们可以使用快慢指针轻松且愉快的高效解决问题。

【不了解快慢指针的看这里】快慢指针原理很简单,想像一下你和你女朋友一起在赛道同时起跑,你的速度肯定是更快的(假设你一步等于她两步),那么你们两个最快遇见的时候是你跑了两圈而她只跑了一圈(原理:你的路程是她的两倍时相遇)。

我们定义slow和fast指针,fast的速度是slow的两倍,不要考虑3倍或n倍,可能会出问题,想要了解问什么不能n倍可以查一查,这里不做讲解

代码实现:

java 复制代码
public int sum(int n){
        int num=0;
        while(n!=0){
            num+=Math.pow(n%10,2);
            n/=10;
        }
        return num;
    }

    public boolean isHappy(int n){
        int slow = n;
        int fast = sum(n);
        while(slow!=fast){
            slow=sum(slow);
            fast=sum(sum(fast));
        }
        return slow==1;
    }
相关推荐
拓恒技术1 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨1 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫2 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
文丑颜不良啊3 小时前
LeetCode876~900题目解析
java·leetcode
罗西的思考3 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
aloha_7893 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
淡海水3 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
知守观4 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅4 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
Wang's Blog4 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友