返回

轻松掌握88. 合并两个有序数组的解法!

后端

轻松上手,从容应对

在 leetcode 上,88. 合并两个有序数组 问题十分经典,是许多程序员在面试中都会遇到的难题。不过,只要掌握了正确的方法,您就可以轻松地解决这个问题。本文将为您提供三种不同的解法,涵盖了从基础到进阶的多种思路,让您能够根据自己的水平选择最适合的方法。

方法一:使用 while 循环

def merge(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.
    """
    i, j, k = 0, 0, 0
    while i < m and j < n:
        if nums1[i] < nums2[j]:
            nums1[k] = nums1[i]
            i += 1
        else:
            nums1[k] = nums2[j]
            j += 1
        k += 1
    while i < m:
        nums1[k] = nums1[i]
        i += 1
        k += 1
    while j < n:
        nums1[k] = nums2[j]
        j += 1
        k += 1

方法二:使用 for 循环

def merge(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.
    """
    for i, num in enumerate(nums2):
        j = m + i
        while j > 0 and nums1[j - 1] > num:
            nums1[j] = nums1[j - 1]
            j -= 1
        nums1[j] = num

方法三:使用 Python 内置的 sorted() 函数

def merge(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.
    """
    nums1[:] = sorted(nums1[:m] + nums2)

结语

通过本文,您已经掌握了三种不同的方法来解决 leetcode 上的 88. 合并两个有序数组 问题。无论是使用 while 循环、for 循环还是 Python 内置的 sorted() 函数,您都可以根据自己的水平和喜好选择最适合自己的方法。希望本文对您的学习和工作有所帮助。