1.1 面试经典 150 题-合并两个有序数组

合并两个有序数组

方法一:先合并再排序

python 复制代码
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.
        """

        # 先合并
        for i in range(m, m+n):
            nums1[i] = nums2[i - m]

        # 再排序
        nums1.sort()

方法二:从尾部按序插入表

python 复制代码
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.
        """
        pos_1, pos_2 = m, n
        count = 0
        while pos_1 > 0 and pos_2 > 0:
            # 从nums1的末尾开始填入数字
            pos = m + n - count - 1
            if nums1[pos_1 - 1] <= nums2[pos_2 - 1]:
                # 最大值出现在nums2的指针处,将值填入,并将pos2指针向前偏移
                nums1[pos] = nums2[pos_2 - 1]
                pos_2 -= 1
            else:
                # 最大值出现在nums1的指针处,将值填入,并将pos2指针向前偏移
                nums1[pos] = nums1[pos_1 - 1]
                pos_1 -= 1
            # 已填入的个数+1
            count += 1
        if not pos_1:
            # nums2中还有数据没有填入
            nums1[:pos_2] = nums2[:pos_2]
相关推荐
数据智能老司机1 小时前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机2 小时前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
c8i4 小时前
django中的FBV 和 CBV
python·django
c8i4 小时前
python中的闭包和装饰器
python
这里有鱼汤7 小时前
小白必看:QMT里的miniQMT入门教程
后端·python
TF男孩17 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
该用户已不存在1 天前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
站大爷IP1 天前
Java调用Python的5种实用方案:从简单到进阶的全场景解析
python
用户8356290780511 天前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
c8i1 天前
python中类的基本结构、特殊属性于MRO理解
python