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

每日OJ题_算法_双指针③_力扣202. 快乐数

目录

力扣202. 快乐数

解析代码


力扣202. 快乐数

202. 快乐数 - 力扣(LeetCode)

难度 简单

编写一个算法来判断一个数 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 <= 23^1 - 1
class Solution {
public:
    bool isHappy(int n) {

    }
};

解析代码

类似判断环形链表的快慢指针,了解一下鸽巢原理:

看一下环形链表的讲解:

数据结构与算法⑥(第二章OJ题,下)后八道链表面试题-CSDN博客

此题为什么一定会成环?:

此题中最大范围为23^1 - 1 等于 2.1*10^9 小于 9999999999(10个9)-> 每个数平方后相加为9^2 * 10 = 810,所以超过810次每个数平方后,至少会有两个数落在[1,810],此时成环的时候slow等于1就是快乐数。

代码:

class Solution {
public:
    int bitSum(int n)
    {
        int sum = 0;
        while(n)
        {
            int x  = n % 10;
            sum += x*x;
            n /= 10;
        }
        return sum;
    }
    bool isHappy(int n) {
        int slow = n, fast  = bitSum(n);
        while(slow != fast)
        {
            slow = bitSum(slow);
            fast = bitSum(bitSum(fast));
        }
        return slow == 1;
    }
};

http://www.kler.cn/news/161187.html

相关文章:

  • 基于YOLOv8深度学习的火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • almaLinux centos8 下载ffmpeg离线安装包、离线安装
  • XUbuntu22.04之OBS30.0设置录制音频降噪(一百九十六)
  • Ubuntu systemd-analyze命令(系统启动性能分析工具:分析系统启动时间,找出可能导致启动缓慢的原因)
  • [vue3] 使用 vite 创建vue3项目的详细流程
  • 【pytorch】深度学习入门一:pytorch的安装与配置(Windows版)
  • 适合炎热天气的最佳葡萄酒有哪些?
  • 北京市经信局局长姜广智带队调研三六零 强调大模型应与行业结合
  • 修改el-table表头样式
  • 电脑搜不自己的手机热点,其余热点均可!
  • doris查询报错err: Error 1105: errCode = 2, detailMessage = query timeout
  • 通信线缆是什么
  • 论ChatGPT让程序员提升效率—掌握时代工具风口修炼之道【文末送书-02】
  • java常用字符串工具方法封装
  • 我们一起聊一聊JWT的那些事
  • 电商平台API接口文档演示案例,拼多多、淘宝、天猫、1688、京东、阿里巴巴、速卖通、LAZADA、虾皮APP商品详情API文档大全
  • CMakeLists获取文件夹——file指令
  • 形态学操作—细化
  • Python 日志(略讲)
  • Java程序员,你掌握了多线程吗?(文末送书)
  • 圣诞将至—C语言圣诞树代码来啦
  • VIR-SLAM代码分析3——VIR_VINS详解之estimator.cpp/.h
  • Wnmp本地搭建结合内网穿透实现远程访问本地Wnmp服务
  • 使用VS Code远程开发MENJA小游戏并通过内网穿透分享本地游戏到公网
  • NR重写console.log 增加时间信息
  • 在Linux上安装KVM虚拟机
  • 冒泡排序详解
  • Android 记录一些Framework开发的命令
  • Think in Java之多态
  • 2024年网络安全比赛--系统渗透测试(超详细)