034-力扣刷题-88--合并两个有序数组

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例:

1
2
3
4
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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.
        """
        while m > 0 and n>0:
            if nums1[m-1] < nums2[n-1]: 
                nums1[m-1+n]=nums2[n-1] #如果说nums末位的数字比nums1末位的数字大,说明nums2末位的数字在整个数组中都是最大的,直接存到nums的m-1+n这个索引的位置
                n=n-1  #nums2的索引向前移动一下
            else:
                nums1[m-1+n],nums1[m-1]=nums1[m-1],nums1[m-1+n] #比他小的话说明这个位置的数字较大那么就移动到后面去,并且将本身的位置留出来变成0可以不变但是变了是个好的习惯,有助于进行理解
                m=m-1 #同时需要将m向左移动一下

        if m == 0 and n>0:
            nums1[:n]=nums2[:n]