【优选算法】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------------------------------------------

相关推荐
迷途之人不知返5 分钟前
List的学习
数据结构·c++·学习·list
6Hzlia5 分钟前
【Hot 100 刷题计划】 LeetCode 23. 合并 K 个升序链表 | C++ 顺序合并
c++·leetcode·链表
今夕资源网9 分钟前
Visual C++运行库合集 V104.0 一个github免费开源的项目VisualCppRedist AIO
开发语言·c++·dll修复工具·dll修复·运行库·修复软件
syagain_zsx10 分钟前
剖析“继承”,清晰易懂
开发语言·c++
数据牧羊人的成长笔记11 分钟前
SVM与朴素贝叶斯算法+Kaggle竞赛+智能推荐系统+关联规则分析与Apriori算法+Gensim与LDA主题模型
算法·机器学习·支持向量机
Season45013 分钟前
C++中论在类中成员变量定义顺序的重要性
开发语言·c++
拳里剑气15 分钟前
C++算法:前缀和
开发语言·c++·算法·前缀和
隔壁大炮22 分钟前
Day07-词嵌入层解释
人工智能·深度学习·算法·计算机视觉·cnn
啊我不会诶25 分钟前
Codeforces Round 1091 (Div. 2) and CodeCraft 26
c++·算法
H Journey27 分钟前
常用知识总结C++、CMake、Linux
linux·c++·opencv·cmake