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]
相关推荐
智算菩萨几秒前
迷宫生成算法:从生成树到均匀随机,再到工程化 Python 实现
python·算法·游戏
深蓝海拓2 分钟前
PySide6从0开始学习的笔记(十二) QProgressBar(进度条)
笔记·python·qt·学习·pyqt
xwill*9 分钟前
Python 的类型提示(type hint)
开发语言·pytorch·python
汉堡go12 分钟前
python_chapter3
开发语言·python
天呐草莓23 分钟前
企业微信运维手册
java·运维·网络·python·微信小程序·企业微信·微信开放平台
2501_9216494924 分钟前
股票 API 对接, 接入德国法兰克福交易所(FWB/Xetra)实现量化分析
后端·python·websocket·金融·区块链
lbb 小魔仙26 分钟前
Python 读取 Excel 文件:openpyxl 与 pandas 实战对比
python·excel·pandas
程序员miki27 分钟前
Redis核心命令以及技术方案参考文档(分布式锁,缓存业务逻辑)
redis·分布式·python·缓存
热爱生活的五柒29 分钟前
两个电脑(windows和linux之间)如何快速传输文件(亲测可用,方便快捷)
python·共享文件夹
洋生巅峰37 分钟前
股票爬虫实战解析
爬虫·python·mysql