题解 | #奶牛快乐数# java

奶牛快乐数

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<Integer> visited = new
        HashSet<>(); // 用于记录已经出现过的结果
        while (n != 1 && !visited.contains(n)) {
            visited.add(n); // 将当前结果加入哈希表
            n = getNextNumber(n); // 获取下一个结果
        }
        return n == 1;
    }

    public int getNextNumber(int n) {
        int sum = 0;
        while (n > 0) {
            int digit = n % 10;
            sum += digit * digit;
            n /= 10;
        }
        return sum;
    }
}

编程语言是Java。

该题考察的知识点是哈希表的使用和循环计算。

代码的简短文字解释如下:

在给定的整数n下,判断是否为快乐数。快乐数是指对于一个正整数,如果将其每个数字的平方和作为新的数字,重复这个过程,最终结果等于1,则该数字是快乐数。

首先创建HashSet集合visited,用于记录已经出现过的结果。

isHappy方法中,通过循环来判断是否为快乐数。当n不等于1且visited集合中不存在当前数字时,执行以下操作:

  • 将当前数字加入到visited集合中。
  • 调用getNextNumber方法获取下一个结果,更新n的值。

通过判断n是否等于1来确定是否为快乐数。

getNextNumber方法中,根据输入的数字n,通过循环计算每个数字的平方和。每次取末尾数字的平方并累加到sum变量中,然后将n除以10进行下一轮迭代。返回最终的平方和作为下一个结果。

全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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