给定整数n返回n位最大数的JS代码在Codefights输出空如何解决
错误原因
- 类型不匹配:你的代码最终返回的是字符串格式的结果,而题目要求返回整数类型,平台校验时无法匹配预期输出,因此判定输出为空。
- 冗余测试代码:你代码末尾的
console.log(largestNumber(10))是本地测试用的语句,部分OJ平台会将控制台输出的内容识别为程序输出,干扰正常的结果校验。 - 潜在大整数溢出:如果题目允许输入的n大于16,生成的全9数字会超出JavaScript的安全整数范围(2^53-1),直接转普通数字会丢失精度,需要根据平台要求调整为返回BigInt类型。
修改方案
最简修改(适配n<=16的场景)
直接将原有代码的返回值转成数字,删除测试用的console.log即可:
const largestNumber = (n) => { let arr = []; let arr2 = []; let maxNum = 9; for (let i = 0; i < n; i++) { arr.push(i); } for (let j = 1; j <= arr.length; j++) { arr2.push(maxNum) } let s = arr2.join(""); return Number(s); }
优化版代码
你原有代码里的两次数组循环属于冗余逻辑,可以用repeat方法简化实现:
const largestNumber = (n) => { return Number('9'.repeat(n)); }
大整数适配版(n>16时使用)
如果题目支持返回BigInt类型,避免精度丢失:
const largestNumber = (n) => { return BigInt('9'.repeat(n)); }
内容的提问来源于stack exchange,提问作者Joydip Paul
相关产品推荐
相关产品推荐

