Leetcode面试经典150题-202.快乐数

题目比较简单,重点是理解思想

解法都在代码里,不懂就留言或者私信

面试的时候可以用我提交的解法,这个更优

java 复制代码
class Solution {
    /**第一种-常规解法,主要的思想是如果出现了循环或者等于1,计算过程就停止
    如果等于1,说明是快乐术,否则就是出现了循环 */
    public boolean isHappy2(int n) {
        if(n == 1) {
            return true;
        }
        /**我们用一个HashSet保存曾经出现过的数 */
        Set<Integer> set = new HashSet<>();
        int sum = n;
        while(sum != 1 && !set.contains(sum)) {
            /**注意这一句要放在最前面,因为下面sum马上要改变了,如果不放第一个,有可能初始sum会被忽略 */
            set.add(sum);
            /**记录当前数所有位的平方和 */
            int curSum = 0;
            /**取每一位的平方相加 */
            while(sum != 0) {
                int curNum = sum % 10;
                curSum += curNum * curNum;
                sum = sum / 10;
            }
            /**赋值给sum进行之后的计算 */
            sum = curSum;
        }
        /**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */
        return sum == 1;
    }

    /**第二种-找规律贪心,列举出一堆数后你会发现,只要sum不出现4就不会死循环,出现了1
    就可以结束,我们就可以把循环条件变成sum != 1&& sum !=4
    这个解法就不用set来记录了 */
    public boolean isHappy(int n) {
        if(n == 1) {
            return true;
        }
        /**我们用一个HashSet保存曾经出现过的数 */
        int sum = n;
        while(sum != 1 && sum != 4) {
            /**记录当前数所有位的平方和 */
            int curSum = 0;
            /**取每一位的平方相加 */
            while(sum != 0) {
                int curNum = sum % 10;
                curSum += curNum * curNum;
                sum = sum / 10;
            }
            /**赋值给sum进行之后的计算 */
            sum = curSum;
        }
        /**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */
        return sum == 1;
    }
}
相关推荐
windliang34 分钟前
Claude Code 源码分析(一):从 claude 命令到 Agent 主循环
javascript·面试·ai编程
hansang_IR1 小时前
【题解】[AGC020E] Encoding Subsets
c++·算法·dp
核数聚1 小时前
【赛迪专访核数聚】深耕数据治理,打通数据孤岛夯实 AI 发展根基
大数据·人工智能·算法
小许同学记录成长2 小时前
相对辐射定标技术文档
图像处理·算法
白白白小纯2 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
小羊先生car2 小时前
RTOS-F429-HAL-(动/静态)任务的创建(2026/7/27)
开发语言·算法·c#
无忧.芙桃2 小时前
数据结构之堆
c语言·数据结构·c++·算法·
Sagittarius_A*2 小时前
[LitCTF2026] lit_xor_two_story
python·算法·密码学
小蒋学算法2 小时前
算法-删除元素后最大固定点数目-典型最长增长序列算法
数据结构·算法
RD_daoyi3 小时前
Google偷偷给AI引用加了五个新功能:内联引用、悬停预览、品牌展示……但点击率真的回来了吗?
大数据·网络·人工智能·算法·安全·搜索引擎