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

003_快乐数

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

202.快乐数

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

「快乐数」 定义为:

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

如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

示例 1:

输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

示例 2:

输入:n = 2
输出:false

提示:

  • 1 <= n <= 231 - 1

题解:

算法原理:快慢指针;相遇点等于1,就是快乐数;不等于1,就不是快乐数。

代码:

class Solution {
public:
    int sum(int n)
    {
        int tmp = n;
        int sum = 0;
        while(tmp)
        {
            sum += pow(tmp % 10, 2);
            tmp /= 10;
        }
        return sum;
    }

    bool isHappy(int n) {
        int slow = n, fast = sum(n); // 快慢双指针
        while(slow != fast)
        {
            slow = sum(slow);   // 慢指针走一步
            fast = sum(sum(fast));  // 快指针走两步
        }

        return slow == 1;
    }
};

http://www.kler.cn/a/586778.html

相关文章:

  • 软件测试之单元测试unittest库使用、参数化、unittestteport
  • vivado ooc与global区别
  • 观成科技:​加密C2框架Platypus流量分析
  • DeepSeek-R1 面试 -—— GRPO
  • Spark 中explode用法
  • Android Dagger 2 框架的注解模块源码分析(一)
  • 【Linux】进程(1)进程概念和进程状态
  • 网络运维学习笔记(DeepSeek优化版) 016 HCIA-Datacom综合实验01
  • Go桌面端口开发方案
  • 操作系统-八股
  • Qt运行xxx.so can not open shared object file
  • C语言学习笔记:变量作用域、数组与字符串处理
  • 网页制作13-Javascipt时间特效の显示动态时间
  • 深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)
  • Linux 终端快捷键 / 键盘快捷键
  • 【c语言数组精选代码题】
  • 【机器学习】机器学习工程实战
  • 【R语言】pmax和pmin函数的用法详解
  • 2025-3-14 leetcode刷题情况(贪心算法)
  • 开发、科研、日常办公工具汇总(自用,持续更新)