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

LeetCode Merge Sorted Array JS实现返回值与控制台输出不一致问询

问题原因说明

你做LeetCode合并有序数组题写的JavaScript代码如下:

var merge = function(nums1, m, nums2, n) {
    //contcating two array
     let array = nums2.concat(nums1)
    // sort the array
     array.sort((a,b) => a-b)
     // remove element > m+n length
 return array.slice(m+n-n)
};

出现「判题时结果是[1,2,3,0,0,0],自己用console打印执行结果却和预期一致,是[1,2,2,3,5,6]」的问题,根源有两点:

  • 这道题根本不要求你返回新数组,要求直接修改传入的nums1原数组,判题逻辑根本不会读你return的值,只会检查传进来的nums1最终是什么内容。你所有的拼接、排序、切片操作全是在新声明的array变量上做的,从头到尾没碰过原nums1的内容,所以判题系统读到的nums1还是最开始传进去的[1,2,3,0,0,0],自然不符合要求。
  • 你自己console打印的是函数return出去的那个新数组,这个数组经过你的处理确实是[1,2,2,3,5,6],但它和判题系统检查的原nums1是完全独立的两个数组,所以才会出现自己打印对、判题不对的错位。

顺便提两个你代码里的问题:

  • 切片参数写m+n-n纯是冗余逻辑,化简之后就是m,完全没必要写这么绕
  • 就算你把return的结果直接赋值给函数里的nums1变量也没用,这只会改函数内部变量的指向,动不到外部传入的原数组,必须用索引赋值、splice这类方式直接修改原数组的内容,才能符合题目的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:18:29