题解 | #奶牛快乐数#

奶牛快乐数

https://www.nowcoder.com/practice/d91cec70c7724a7dbcea02ed25bdeaee

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return bool布尔型
     */
    public boolean isHappy (int n) {
        // write code here
        // 用hashSet进行重复循环判断
        HashSet<Integer> set = new HashSet<>();
        // sum表示每次生成的数字
        int sum = 0;
        int single;
        while (true) {
            // single表示每一个位数
            single = n % 10;
            // 新生成的数字
            sum += single * single;
            n = n / 10;
            // 如果n==0 表示,新数字已经完成生成
            if (n == 0) {
                // n重新被赋值,将新数字赋值给n
                n = sum;
                // 如果sum==1表示已经找到快乐数
                if (sum == 1) {
                    return true;
                }
                // 如果hashSet已经包含了sum表示已经出现重复的循环,直接返回false即可
                if (set.contains(sum)) {
                    return false;
                }
                // 将每次生成的新数字加入到hashSet中,用来判断是否已经出现重复循环。
                set.add(sum);
                // sum重新赋值为0
                sum = 0;
            }
        }
    }
}

知识点:

1.哈希去重

2.数字取余和整除,如何取出个位,十位,等等

解题分析:

1.怎么对数字进行取出每一个位数上的数字,这个简单,取余+整除

2.怎么判断是否出现无限循环,也不难,用hashSet判断是否已经出现重复的数字

3.如果出现直接返回false,表示不可能是快乐数就可以了

编程语言:

Java

全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
我看看你怎么个事来
牛牛爱吃草草:我看看你怎么个事来
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务