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;
    }
}
相关推荐
brave102519 分钟前
LLMGuide 大模型面试指南
人工智能·ai·面试·ai编程
zh_xuan1 小时前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
机 _ 长1 小时前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
早起CaiCai2 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
梦里寻码2 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
猿人谷3 小时前
Surrogate Model:让进化算法学会“预测”,为什么它正在成为智能优化的重要技术?
后端·算法·架构
文丑颜不良啊4 小时前
LeetCode2241~2260题目解析
java·leetcode
文丑颜不良啊4 小时前
LeetCode2321~2340题目解析
java·leetcode
青少儿编程课堂4 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛