leetcode-88. 合并两个有序数组

一、题目要求

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

说明:

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

示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]

二、代码和思路

class Solution:
    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,j=0,0
        for num in nums2:
            #遍历nums2中的元素。找到元素需要插入到nums1的正确位置,然后弹出nums1的最后一个无效元素,插入num
            while num>nums1[i] and i<m+j:   #因为这里需要到预留空间即无效数字前停止向后移动,需要限制下i<m+j
                i += 1
            nums1.pop()
            nums1.insert(i,num)

            j += 1

三、结果


阅读更多
换一批

没有更多推荐了,返回首页