news 2026/4/15 21:11:40

合并两个有序数组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/4/15 3:51:04

信达生物与礼来制药达成全球战略合作

、美通社信息&#xff1a;信达生物制药集团宣布与礼来制药达成战略合作&#xff0c;携手推进肿瘤及免疫领域创新药物的全球研发。本次协议为双方第七次合作&#xff0c;进一步深化了双方长期且富有成效的合作伙伴关系&#xff0c;携手为全球患者带来创新药物。这一独特的合作架…

作者头像 李华
网站建设 2026/3/30 12:04:36

计算是事实性的利,算计是价值性的义

“计算是事实性的利&#xff0c;算计是价值性的义”&#xff0c;用“利”与“义”这对经典范畴&#xff0c;精准锚定了计算与算计的核心区别——前者是对“事实收益”的客观度量&#xff0c;后者是对“价值正当”的主观权衡。这不仅呼应了我们之前关于算计是“意义赋予”的涌现…

作者头像 李华
网站建设 2026/4/10 16:43:09

【 Java 性能调优 | 问题定位与测试验证 】

摘要&#xff1a;本文聚焦 Java 性能调优的问题定位与测试验证&#xff0c;先明确性能调优需解决的核心问题&#xff0c;接着介绍线程转储的获取方法&#xff0c;随后通过案例演示如何借助工具定位问题。 1. 性能调优 1.1 性能调优解决的问题 应用程序在运行过程中经常会出现…

作者头像 李华
网站建设 2026/4/11 17:48:03

炸裂!Seedream 5.0 真的让生图变得像呼吸一样自然

这几天&#xff0c;朋友圈和科技圈都被 AI 应用集体爆发的消息刷屏了。作为一名AI深度用户&#xff0c;我见识过无数号称要颠覆行业的工具&#xff0c;但当字节跳动的 Seedream 5.0 真正摆在面前时&#xff0c;我还是感受到了久违的震撼。现在的自媒体环境&#xff0c;早已从文…

作者头像 李华
网站建设 2026/4/15 15:34:20

LightOnOCR-2-1B与TensorRT加速:推理性能提升实战

LightOnOCR-2-1B与TensorRT加速&#xff1a;推理性能提升实战 1. 为什么文档智能需要更快的OCR引擎 最近在处理一批历史扫描合同的时候&#xff0c;我遇到了一个典型问题&#xff1a;用常规OCR方案跑完50页PDF要等近8分钟&#xff0c;而业务部门要求两小时内完成300页的数字化…

作者头像 李华
网站建设 2026/4/15 15:35:00

GLM-ASR-Nano-2512快速上手:curl命令直连API完成语音转写调用

GLM-ASR-Nano-2512快速上手&#xff1a;curl命令直连API完成语音转写调用 1. 为什么你需要关注这个语音识别模型 你有没有遇到过这样的场景&#xff1a;会议录音堆成山&#xff0c;却没人愿意花两小时逐字整理&#xff1b;客户来电反馈关键信息&#xff0c;但语音转文字工具总…

作者头像 李华