[英]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.