news 2026/5/11 14:57:14

合并两个有序数组Python解法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
合并两个有序数组Python解法

给你两个按非递减顺序排列的整数数组nums1nums2,另有两个整数mn,分别表示nums1nums2中的元素数目。

请你合并nums2nums1中,使合并后的数组同样按非递减顺序排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0输出:[1]解释:需要合并 [1] 和 [] 。 合并结果是 [1] 。

示例 3:

输入:nums1 = [0], m = 0, nums2 = [1], n = 1输出:[1]解释:需要合并的数组是 [] 和 [1] 。 合并结果是 [1] 。 注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。

解法代码如下:

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. """ # 三个指针都指向末尾 p1 = m - 1 # nums1 有效数据末尾 p2 = n - 1 # nums2 末尾 p = m + n - 1 # nums1 数组末尾(填充位置) # 从后向前比较,大的放后面 while p1 >= 0 and p2 >= 0: if nums1[p1] > nums2[p2]: nums1[p] = nums1[p1] p1 -= 1 else: nums1[p] = nums2[p2] p2 -= 1 p -= 1 # 如果 nums2 还有剩余,拷贝到前面 # 注意:nums1 有剩余不用处理,因为已经在正确位置 while p2 >= 0: nums1[p] = nums2[p2] p2 -= 1 p -= 1

初始状态:
nums1 = [1, 2, 3, 0, 0, 0] m=3
nums2 = [2, 5, 6] n=3
↑ ↑ ↑
p1=2p=5p2=2

步骤1: nums1[2]=3 < nums2[2]=6 → nums1[5]=6
[1, 2, 3, 0, 0, 6] p2=1, p=4

步骤2: 3 < 5 → nums1[4]=5
[1, 2, 3, 0, 5, 6] p2=0, p=3

步骤3: 3 > 2 → nums1[3]=3
[1, 2, 3, 3, 5, 6] p1=1, p=2

步骤4: nums1[1]=2 == nums2[0]=2 → nums1[2]=2
[1, 2, 2, 3, 5, 6] p2=-1, 结束

最终结果: [1, 2, 2, 3, 5, 6]

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 9:45:05

OpenClaw 给了每个人“数字分身“,但企业更需要可靠的 AI 员工

GitHub星标破10万&#xff1b;以一己之力引发Mac mini的抢购潮&#xff1b;有人将其称为“迄今为止最伟大的 AI 应用”。最近&#xff0c;AI圈的头号C位非OpenClaw&#xff08;原Clawdbot/Moltbot&#xff09;莫属。和以前那些只会“说”的 Chatbot 不同&#xff0c;OpenClaw是…

作者头像 李华
网站建设 2026/4/25 6:40:33

小米开源2025年度报告发布 | 以开源为翼,赴技术新程

2025年度&#xff0c;小米开源以 “尊重、回馈、价值”为核心理念&#xff0c;发布了 Xiaomi MiMo 系列大模型、声音理解大模型 MiDashengLM-7B&#xff0c;开源了跨域具身基座模型 Xiaomi MiMo-Embodied 以及探索大模型驱动全屋智能的 Xiaomi Miloco 等核心项目&#xff0c;op…

作者头像 李华
网站建设 2026/5/11 14:00:55

35 岁双非本科还能进大厂?

大家好&#xff0c;我是R哥。今天我又来分享一个励志的辅导案例&#xff0c;这兄弟基本信息如下&#xff1a;年龄&#xff1a;马上快 35⼯作年限&#xff1a;10年学历&#xff1a;双非本科/非科班薪资&#xff1a;20k核心诉求&#xff1a;进大厂&#xff0c;薪资达到40w说实话&…

作者头像 李华
网站建设 2026/5/8 22:52:28

九元伦理原子:自指认知框架下的伦理升维与AGI内生安全范式

九元伦理原子&#xff1a;自指认知框架下的伦理升维与AGI内生安全范式摘要在通用人工智能&#xff08;AGI&#xff09;从“可用”走向“可信、可控、可持续”的进程中&#xff0c;传统外挂式伦理对齐方案已显现出局限性。本文提出九元伦理原子&#xff08;Ninefold Ethical Ato…

作者头像 李华
网站建设 2026/5/11 1:57:59

基于STM32F103平台的示波器应用设计方案

一、系统架构设计 1. 硬件模块组成模块核心组件功能描述主控单元STM32F103C8T672MHz主频&#xff0c;内置12位ADC&#xff08;1Msps&#xff09;、DMA、定时器&#xff0c;支持双通道同步采样信号调理AD827运放可编程增益放大器输入阻抗1MΩ&#xff0c;增益0-40dB可调&#xf…

作者头像 李华
网站建设 2026/5/10 11:24:36

法律金融从业者必备:GLM-4-9B-Chat长文本分析工具

法律金融从业者必备&#xff1a;GLM-4-9B-Chat长文本分析工具 1. 为什么法律金融从业者需要专业AI工具 法律和金融行业每天都要处理大量复杂文档&#xff1a;上百页的合同、数千行的财报、冗长的法规文件。传统的人工阅读和分析方式不仅效率低下&#xff0c;还容易遗漏关键信…

作者头像 李华