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;
}
相关推荐
Q813757460几秒前
中阳视角下的资产配置趋势分析与算法支持
算法
yvestine7 分钟前
自然语言处理——文本表示
人工智能·python·算法·自然语言处理·文本表示
GalaxyPokemon36 分钟前
LeetCode - 148. 排序链表
linux·算法·leetcode
iceslime1 小时前
旅行商问题(TSP)的 C++ 动态规划解法教学攻略
数据结构·c++·算法·算法设计与分析
aichitang20242 小时前
矩阵详解:从基础概念到实际应用
线性代数·算法·矩阵
John Song3 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
OpenCSG3 小时前
电子行业AI赋能软件开发经典案例——某金融软件公司
人工智能·算法·金融·开源
dfsj660113 小时前
LLMs 系列科普文(14)
人工智能·深度学习·算法
薛定谔的算法4 小时前
《盗梦空间》与JavaScript中的递归
算法
kaiaaaa4 小时前
算法训练第十一天
数据结构·算法