【优选算法】3----快乐数

这是第三篇算法题,也是十分的不好想,虽然定位在简单,但我感觉还是有些难度的~

-------------------------------------begin-----------------------------------------

题目解析:

同样的,这道算法题,看题目的话,也是很难理解的但我们抠字眼,"无限循环",这就让我们想到了链表,带环链表和不带环链表,快慢指针的思想~

讲解算法原理:

这道题,我们可以运用前面所理解的两种思路,链表和快慢指针的思路来遍历,定义两个指针slow和fast分别指向第一个数和下一个数,两个指针不相遇则继续遍历下去,slow一次走一个数,fast一次走两个数,额外还需要一个函数将参数n进行位数拆分计算~

编写代码:

cpp 复制代码
class Solution 
{
    int bitSum(int n)
    {
        int sum=0;
        while(n)
        {
            int t=n%10;
            sum+=t*t;
            n/=10;
        }
        return sum;
    }

public:
    bool isHappy(int n) 
    {
        int slow=n,fast=bitSum(n);
        while(slow!=fast)
        {
            slow=bitSum(slow);
            fast=bitSum(bitSum(fast));
        }
        return fast==1;
    }
};

过程不算复杂,只是思路比较难理解~

想试试水的铁子也可以去做一下哦~

202. 快乐数 - 力扣(LeetCode)

--------------------------------------end------------------------------------------

相关推荐
XiYang-DING14 小时前
【LeetCode】102.二叉树的层序遍历
算法·leetcode·职场和发展
艾莉丝努力练剑14 小时前
【Linux线程】Linux系统多线程(三):Linux线程 VS 进程,线程控制
java·linux·运维·服务器·c++·学习·ubuntu
计算机安禾14 小时前
【数据结构与算法】第33篇:交换排序(二):快速排序
c语言·开发语言·数据结构·数据库·算法·矩阵·排序算法
洛水水14 小时前
高性能网络编程:io_uring vs epoll、QPS测试工具实现与10道网络面试题解析
c++·udp·tcp·io_uring
沙雕不是雕又菜又爱玩14 小时前
leetcode第12、13、14、15题(C++)
c++·算法·leetcode
睡一觉就好了。14 小时前
C++多态
c++
汀、人工智能14 小时前
[特殊字符] 第50课:最大路径和
数据结构·算法·数据库架构·图论·bfs·最大路径和
啦啦啦!14 小时前
项目环境的搭建,项目的初步使用和deepseek的初步认识
开发语言·c++·人工智能·算法
AI成长日志14 小时前
【笔面试算法学习专栏】链表操作·基础三题精讲(206.反转链表、141.环形链表、21.合并两个有序链表)
学习·算法·面试
曼巴UE514 小时前
Unlua 官方案例
c++·ue5·lua·ue