这题虽然简单,但是仔细写写也有很多的小细节注意。题目本身是将2个sorted list合并成一个sorted list。是需要排序的。然后只能直接在nums1上改。m, n并不是总长度,而是取这么长的一段出来,所以nums1需要将后面的全部去掉。代码如下:
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: void Do not return anything, modify nums1 in-place instead.
"""
if m == 0:
for i in range(len(nums1))[::-1]:
del nums1[i]
for i in range(len(nums2)):
nums1.append(nums2[i])
else:
if n != 0:
for i in range(m, len(nums1))[::-1]:
del nums1[i]
i = 0
j = 0
while True:
if nums1[i] <= nums2[j]:
if i != len(nums1) - 1:
i = i + 1
else:
for k in range(j, len(nums2)):
nums1.append(nums2[k])
break
else:
nums1.insert(i, nums2[j])
if j == len(nums2) - 1:
break
j = j + 1
i = i + 1