news 2026/9/7 6:39:03

合并两个有序数组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/9/2 5:15:13

告别 Flaky Tests:Go 官方拟引入 testing/nettest,重塑内存网络测试标准

大家好&#xff0c;我是Tony Bai。在 Go 语言的测试哲学中&#xff0c;我们一直追求快速、稳定和可重复。然而&#xff0c;一旦测试涉及到 net 包——无论是 HTTP 服务、RPC 框架还是自定义协议——这种追求往往就会撞上现实的墙壁。我们通常面临两种选择&#xff1a;要么在 lo…

作者头像 李华
网站建设 2026/9/2 22:56:08

CANN hixl 对稀疏梯度传输的压缩与聚合支持原理

cann组织链接&#xff1a;https://atomgit.com/cann hixl仓库链接&#xff1a;https://atomgit.com/cann/hixl 前言在大规模分布式深度学习训练中&#xff0c;尤其是大语言模型&#xff08;LLM&#xff09;和推荐系统场景下&#xff0c;梯度张量往往呈现高度稀疏性——仅有少量…

作者头像 李华
网站建设 2026/9/2 22:55:46

CANN hixl 的异步通信上下文管理与资源隔离机制

相关链接&#xff1a; CANN 组织主页&#xff1a;https://atomgit.com/cannhixl 仓库地址&#xff1a;https://atomgit.com/cann/hixl 前言 在 CANN&#xff08;Compute Architecture for Neural Networks&#xff09;高性能通信生态中&#xff0c;HIXL&#xff08;Huawei Xfe…

作者头像 李华
网站建设 2026/9/6 13:44:33

Qwen3-VL-4B Pro部署教程:解决transformers版本兼容的内存补丁实践

Qwen3-VL-4B Pro部署教程&#xff1a;解决transformers版本兼容的内存补丁实践 想快速体验一个能“看懂”图片的AI助手吗&#xff1f;Qwen3-VL-4B Pro就是一个不错的选择。它基于阿里通义千问的官方4B模型&#xff0c;不仅能识别图片里的物体&#xff0c;还能回答关于图片的各…

作者头像 李华
网站建设 2026/9/3 8:02:03

通义千问1.5-1.8B-Chat-GPTQ-Int4在LaTeX文档编写中的智能排版辅助

通义千问1.5-1.8B-Chat-GPTQ-Int4在LaTeX文档编写中的智能排版辅助 写学术论文或者技术手册&#xff0c;最头疼的环节是什么&#xff1f;很多人会说是排版。尤其是用LaTeX&#xff0c;虽然最终效果专业漂亮&#xff0c;但那一堆复杂的命令和语法&#xff0c;还有动不动就报错的…

作者头像 李华