Likou NO.88 Fusionar dos matrices ordenadas

enlace de tema

Detalles del tema

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Método 1: use la idea de fusionar matrices ordenadas en ordenación por fusión

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        # 主要参考归并排序的思路,将符合条件的nums2中的值插入nums1中
        idx1 = idx2 = 0
        while idx1<m+n and idx2<n: # nums1中会预留出nums2数量(n)的0用来占位,所以idx1<m+n,否则n<m时循环可能提前结束,比如:[4,0,0,0,0,0] 1 [1,2,3,5,6] 5 ,错误输出:[1,4,2,3,5,6]
            if nums1[idx1] > nums2[idx2]:
                nums1.insert(idx1,nums2[idx2])
                idx1+=1
                idx2+=1
            else:
                idx1+=1
        #程序到此有两种情况:nums2已经完全插入nums1中,此时需要切除多余的占位符0;nums1已经排好序,nums2还有数据因为占位符0比nums2后面的数小而未插入,此时需要把nums2剩余的数据替换到nums1中的相应位置
        length = m+idx2
        nums1[length:] = nums2[idx2:]

Método 2: combinación directa de matriz + ordenación ()

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        nums1[m:] = nums2
        nums1.sort() # 默认升序排列

Supongo que te gusta

Origin blog.csdn.net/qq_33489955/article/details/123883580
Recomendado
Clasificación