HackerRank挑战赛The Hurdle Race本地正确线上测试失败问题求助
错误核心原因
你的两个实现均存在入参顺序与题目要求不匹配的问题,这是提交后通过率低的核心诱因:
HackerRank平台「The Hurdle Race」挑战给定的hurdleRace函数入参规则为:
- 第一个参数
k:数值类型,代表角色默认可以跳跃的最大高度 - 第二个参数
height:数组类型,存储所有栏架的高度
你的代码逻辑完全倒置了两个参数的作用:将第一个入参作为栏架高度数组处理,第二个入参作为角色跳跃高度数值处理。你本地测试时自行传入的参数顺序为hurdleRace(栏架数组, 跳跃高度)刚好匹配你写的逻辑,所以本地运行结果正确;但提交到平台后,平台会按照官方定义的顺序传参,此时你代码中拿数值类型的k求最大值、遍历长度,都会得到错误结果,自然会出现返回0的异常情况。
修正后的代码示例
以第一个实现为例,仅需调整参数对应的逻辑即可:
function hurdleRace(k, height) { // 从height数组取最大栏架高度 let maxH = Math.max.apply(null, height); // 用角色跳跃高度k和最大栏高对比 if (k < maxH) { return maxH - k; } else { return 0; } }
第二个实现同理,把代码中所有用到k的位置替换为height,判断条件里的height替换为k即可正常运行。
其他注意事项
提交代码前建议删除多余的console.log语句,部分编程判题平台会将控制台输出内容识别为程序返回结果,可能引发不必要的判题失败。
内容的提问来源于stack exchange,提问作者Armando Apolinar
相关产品推荐
相关产品推荐

