题解 | #奶牛快乐数#

奶牛快乐数

https://www.nowcoder.com/practice/d91cec70c7724a7dbcea02ed25bdeaee?tpId=354&tqId=10589470&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D354

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return bool布尔型
     */
    public boolean isHappy (int n) {
        // write code here
        Set<Integer> seenNumbers = new HashSet<>();

        while (n != 1 && !seenNumbers.contains(n)) {
            seenNumbers.add(n);
            n = getNextNumber(n);
        }

        return n == 1;
    }

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

知识点:

  1. 循环:通过 while 循环来重复进行数字转换,直到得到 1 或者陷入循环。
  2. 哈希集合(HashSet):用于存储已经出现过的数字,以便检测是否陷入循环。
  3. 数字操作:通过取余操作和除法操作来获取每个位数上的数字,然后计算平方和。

解题思路:

使用一个哈希集合来存储已经出现过的数字,以便检测是否陷入循环。我们使用一个循环来进行数字转换,通过不断计算每个位数上的数字的平方和。如果最终得到数字 1,则返回 true,否则返回 false。

全部评论

相关推荐

码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:23
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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