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

Python中Leetcode题目Output与Stdout不一致问题求助

问题分析:LeetCode合并数组题本地输出正确但系统判定错误

我是编程新手,正在做Leetcode题目,题目要求将答案存储在nums1中。当我打印nums1时,Stdout显示正确答案,但系统判定的Output却不一致?

用户提供的代码:

class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: None Do not return anything, modify nums1 in-place instead.
        """

        for x in range(n):
            nums1.remove(0)

        nums1 = nums1 + nums2
        nums1.sort()
        print(nums1)

问题根源

  1. 列表赋值逻辑错误:nums1 = nums1 + nums2会创建一个全新的列表对象,并把函数内的局部变量nums1指向这个新列表,但外部传入的原始nums1列表根本没被修改。LeetCode系统检查的是传入的原始列表内容,所以判定结果和你打印的不一致。
  2. 删除0的逻辑漏洞:用nums1.remove(0)删除占位0的方式不可靠,如果nums1的有效元素本身包含0,会误删有用数据。正确的做法是直接截取前m个有效元素。

修正方案

方案一:简单修改(保证正确性)

class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: None Do not return anything, modify nums1 in-place instead.
        """
        # 用切片赋值直接修改原列表内容,而非创建新列表
        nums1[:] = nums1[:m] + nums2
        nums1.sort()

方案二:双指针最优解法(时间O(m+n),空间O(1))

题目要求原地修改,双指针从后往前遍历可避免覆盖未处理元素,无需额外空间:

class Solution(object):
    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]

关键说明

  • 使用nums1[:] = ...是直接修改原列表的内部元素,而nums1 = ...仅改变局部变量的指向,不会影响外部传入的原始列表。
  • 双指针解法无需排序,效率更高,符合LeetCode题目的最优解要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:42:35