解题思路:
使用 i 遍历nums1,由于两个数组都为有序数组所以可以直接比较第 i 个元素和nums2中的元素,若第i个元素比nums2中第一个元素大的话,则将nums2中的的第一个元素插入到第i个位置,将nums2[0]删除(nums2数组中始终保存着没有插入的元素),若第i个位置小于nums2中的第一个元素则 i+1,继续比较下一个元素与nums2中第0个元素的大小。若到最后i >= len(nums1)则遍历完成后nums2中还有元素,则说明nums2中的元素比nums1中最大的元素都大(两个数组都为有序数组),则直接在后面加入nums2中的元素。最后将nums1中 l(其实 l = m + n) 以后的位置的元素都删除。
def merge(nums1, m, nums2, n):
i = 0
l = len(nums1)
while i < l and len(nums2):
if nums1[i] > nums2[0]:
nums1.insert(i, nums2[0])
del (nums2[0])
i += 1
if len(nums2):
nums1[l - len(nums2):] = nums2
del (nums1[l:])