繁体   English   中英

在leetcode中合并排序数组:列表的就地修改不起作用

[英]Merge Sorted Array in leetcode: The in-place modification of list doesn't work

问题的链接: merge sorted array

我不知道为什么我的解决方案在退出函数merge时不会修改列表 nums1 。 这是代码:

def merge(self, nums1, m, nums2, n):
    """
    :type nums1: List[int]
    :type m: int
    :type nums2: List[int]
    :type n: int
    :rtype: void Do not return anything, modify nums1 in-place instead.
    """
    i = 0
    j = 0
    while i < m and j < n:
        if nums1[i] < nums2[j]:
            i += 1
        else:
            nums1 = nums1[:i-1] + [nums2[j]] + nums1[i-1:]
            i += 1
            j += 1
    if i == m:
        nums1 = nums1 + nums2

列表是可变的,因此您可以创建您正在寻找的行为。 您需要做的是为 nums1 中的特定索引分配新值。 当您使用拼接时,您实际上是在创建新列表。 使用[].insert()[].pop()[].extend()等列表函数来实现您正在寻找的功能。

class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
    """
    Do not return anything, modify nums1 in-place instead.
    """
    nums1[:]=nums1[:m]
    for num in nums2:
        nums1.append(num)
    
    nums1[:]=sorted(nums1[:m+n])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM