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;
}
相关推荐
南境十里·墨染春水2 小时前
C++ 工厂模式:从入门到进阶,彻底掌握对象创建的艺术
开发语言·c++·算法
@insist1232 小时前
系统架构设计师-实时性评价、调度算法与内核架构选型
算法·架构·系统架构·软考·系统架构设计师·软件水平考试
一只齐刘海的猫8 小时前
【Leetcode】找到字符串中所有字母异位词
算法·leetcode·职场和发展
海清河晏1118 小时前
数据结构 | 八大排序
数据结构·算法·排序算法
IronMurphy9 小时前
【算法五十七】146. LRU 缓存
算法·缓存
凌波粒10 小时前
LeetCode--108.将有序数组转换为二叉搜索树(二叉树)
算法·leetcode·职场和发展
liulilittle10 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
浦信仿真大讲堂10 小时前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
点云侠10 小时前
PCL 生成三棱锥点云
c++·算法·最小二乘法