如何实现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
相关产品推荐
相关产品推荐

