You need to enable JavaScript to run this app. 如何实现Java happyArray函数返回前x个快乐数的整型数组
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Java happyArray函数返回前x个快乐数的整型数组

快乐数数组生成函数实现

基于已编写的sumDigitSquare和isHappy辅助函数,生成前x个快乐数数组的核心思路非常直接:从最小的正整数开始逐个校验,将符合快乐数定义的数字按从小到大的顺序存入结果数组,直到凑够x个为止。

实现逻辑

  • 加入入参边界判断:如果传入的x≤0,直接返回长度为0的空数组,避免非法入参引发的数组越界问题
  • 初始化长度为x的int类型结果数组,同时设置两个追踪变量:
    • 已收集到的快乐数计数,初始值为0
    • 待校验的当前数字,从1开始逐位递增排查
  • 循环执行校验:只要已收集的快乐数数量没达到x,就调用isHappy判断当前数字是否为快乐数:
    • 如果是快乐数,就将数字写入结果数组的对应位置,同时累加已收集计数
    • 无论是否校验通过,都将待校验数字加1,继续排查下一个数,直到收集满x个数字即可终止循环、返回结果数组

完整方法代码

public static int[] happyArray(int x) {
    // 处理非法入参
    if (x <= 0) {
        return new int[0];
    }
    int[] happyNums = new int[x];
    int collectedCount = 0;
    int currentCheckNum = 1;
    
    while (collectedCount < x) {
        if (isHappy(currentCheckNum)) {
            happyNums[collectedCount] = currentCheckNum;
            collectedCount++;
        }
        currentCheckNum++;
    }
    return happyNums;
}

补充说明

该实现完全兼容现有两个辅助方法,不需要修改原有代码逻辑;由于isHappy已经通过“运算最终停在1或停在4”的判定逻辑解决了不快乐数的无限循环问题,整个遍历过程不需要额外存储历史判断记录,运行时的性能开销极低。


内容的提问来源于stack exchange,提问作者h4ckerlinguist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 07:06:03