LeetCode202快乐数


思路:

第一个点就是求该数各位平方和,第二个就是考虑如何判断是否出现循环,即当前平方和是否曾经出现过,考虑用哈希表

第二步需要考虑哈希表的长度,题目中给出的n的范围可知,最长是32位,最大数是32位全1,那么平方和最大就是31位9,最大和是2511,所以可以设置数组长度为2512,用于记录平方和是否出现过,从而判断是否循环

c 复制代码
//SquareSum用于求该数平方和
int SquareSum(int a)
{
    int tmp=a;
    int sum=0;
    while(tmp!=0)
    {
        int k=tmp%10;
        sum+=k*k;
        tmp/=10;
    }
    return sum;
}
bool isHappy(int n) 
{
    //定义一个哈希表用于记录当前出现过的数
    int hash[2512]={0};
    while(n!=1)
    {
        int tmp=SquareSum(n);
        if(hash[tmp]==1) return false;
        if(hash[tmp]==0) hash[tmp]=1;
        n=tmp;
    }
    return true;
}
相关推荐
卷卷的小趴菜学编程15 分钟前
算法篇-------------双指针法
c语言·开发语言·c++·vscode·算法·leetcode·双指针法
komo莫莫da24 分钟前
Day14 动态规划(3)
算法·深度优先·动态规划
地平线开发者1 小时前
【征程 6】工具链 VP 示例为什么能运行
算法·自动驾驶
ElseWhereR1 小时前
困于环中的机器人
c++·算法·leetcode
学也不会1 小时前
d2025331
java·数据结构·算法
清晨朝暮2 小时前
【算法学习计划】贪心算法(中)
学习·算法·贪心算法
独好紫罗兰2 小时前
洛谷题单2-P2433 【深基1-2】小学数学 N 合一-python-流程图重构
开发语言·python·算法
独好紫罗兰2 小时前
洛谷题单2-P5709 【深基2.习6】Apples Prologue 苹果和虫子-python-流程图重构
开发语言·python·算法
巨可爱熊2 小时前
C++基础算法(插入排序)
java·c++·算法
山河君2 小时前
音频进阶学习二十五——脉冲响应不变法实现低通滤波器
学习·算法·音视频·信号处理