You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HackerRank Mini-Max Sum挑战:结果匹配却提交被拒求排查

排查HackerRank Mini-Max Sum提交失败问题

嘿,我在做HackerRank的Mini-Max Sum算法挑战时碰到了个奇怪的问题——本地运行代码返回的结果和预期值完全一致,但提交后却被系统驳回了。想请各位大佬帮忙排查下问题出在哪,以及怎么解决。

我写的核心代码(提交的代码是完整的,以下是截断后的核心逻辑):

function miniMaxSum(arr) {
  var arrClone1 = arr.slice()
  var arrClone2 = arr.slice()
  var arrMinor = arrClone1.sort(function(a, b){return a - b;})
  arrMinor.pop()
  var arrMajor = arrClone2.sort(function(a, b){return b - a;})
  // 后续求和与输出逻辑
}

我怀疑可能的问题点:

  • 输出格式不符合要求:HackerRank要求必须输出两个整数,用单个空格分隔,不能有额外的换行、逗号或者其他字符。比如正确输出是10 14,如果不小心输出成10\n14或者10,14,就会被驳回。
  • 排序后的数组处理有漏洞:虽然克隆了数组再排序,但会不会在求和时漏算元素?比如升序数组pop后是否真的保留了最小的四个元素?
  • 大整数精度丢失:JS的Number是双精度浮点数,当数组元素是极大值时,累加可能出现精度问题(不过HackerRank测试用例一般不会超出安全整数范围)。
  • 代码语法错误:如果提交的代码真的像我贴的那样有截断(比如sort回调没写完),那肯定会直接报错被驳回。

推荐的解决方案:

  1. 换更简洁高效的逻辑(避免排序两次的风险):
    不需要克隆数组排序两次,直接通过总和减去最值来计算,逻辑更简单也更少出错:
function miniMaxSum(arr) {
    const totalSum = arr.reduce((acc, num) => acc + num, 0);
    const minNum = Math.min(...arr);
    const maxNum = Math.max(...arr);
    console.log(totalSum - maxNum, totalSum - minNum);
}
  1. 严格检查输出格式:
    确保console.log的参数只有两个数值,用逗号分隔(console.log会自动用空格分隔参数),不要手动添加额外字符,也不要多输出其他内容。

  2. 测试边界用例:
    比如测试所有元素相同的情况([5,5,5,5,5],输出应为20 20)、元素重复的情况([1,2,3,4,4],最小和10,最大和13),确保代码在这些场景下都能正确输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:34