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

LeetCode合并两个有序数组问题:本地正常运行但平台报错求助

合并两个有序数组问题排查与解决

问题核心

LeetCode这道题要求原地修改nums1数组,而非返回新数组。你的代码创建了新数组arr并返回,但平台会直接检查传入的nums1的修改结果,这是导致提交失败的根本原因。

正确的原地实现思路

利用nums1末尾预留的空位(总长度为m+n),从两个数组的有效元素末尾开始反向比较:

  • 每次取较大的元素放到nums1的当前末尾位置
  • 无需额外开辟数组空间,也不会覆盖未处理的元素

修改后的可通过代码

class Solution:
    def merge(self, nums1, m, nums2, n):
        # 指针分别指向nums1有效元素末尾、nums2末尾、nums1实际末尾(含空位)
        p1, p2, p = m - 1, n - 1, m + n - 1
        
        # 反向遍历比较两个数组的有效元素
        while p1 >= 0 and p2 >= 0:
            if nums1[p1] > nums2[p2]:
                nums1[p] = nums1[p1]
                p1 -= 1
            else:
                nums1[p] = nums2[p2]
                p2 -= 1
            p -= 1
        
        # 若nums2还有剩余元素,直接覆盖nums1的前半部分
        nums1[:p2+1] = nums2[:p2+1]

补充说明

  • 本地运行时你可能直接打印了函数返回的新数组,所以看起来正常;但LeetCode平台完全依赖传入的nums1数组的修改结果,会忽略函数的返回值
  • 最后一步处理nums2剩余元素的逻辑:当nums1的有效元素已全部处理完,nums2剩下的元素都比nums1的所有元素小,直接覆盖nums1的前p2+1个位置即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:18:10