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] |