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]
相关推荐
AI探索者2 小时前
LangGraph StateGraph 实战:状态机聊天机器人构建指南
python
AI探索者2 小时前
LangGraph 入门:构建带记忆功能的天气查询 Agent
python
FishCoderh4 小时前
Python自动化办公实战:批量重命名文件,告别手动操作
python
躺平大鹅4 小时前
Python函数入门详解(定义+调用+参数)
python
曲幽5 小时前
我用FastAPI接ollama大模型,差点被asyncio整崩溃(附对话窗口实战)
python·fastapi·web·async·httpx·asyncio·ollama
两万五千个小时8 小时前
落地实现 Anthropic Multi-Agent Research System
人工智能·python·架构
哈里谢顿11 小时前
Python 高并发服务限流终极方案:从原理到生产落地(2026 实战指南)
python
用户8356290780511 天前
无需 Office:Python 批量转换 PPT 为图片
后端·python
markfeng81 天前
Python+Django+H5+MySQL项目搭建
python·django
GinoWi1 天前
Chapter 2 - Python中的变量和简单的数据类型
python