news 2026/9/18 16:50:20

合并两个有序数组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/16 9:59:18

【Dubbo服务找不到?从抓耳挠腮到一键解决,全流程干货!】

作为一名天天和BUG贴贴的程序员&#xff0c;排查问题就像拆盲盒——你永远不知道下一个坑是逻辑bug、环境搞怪&#xff0c;还是同事偷偷改的配置让你当场破防。而最让人崩溃的&#xff0c;当属Dubbo服务找不到的坑&#xff01;就像你约了朋友吃饭&#xff0c;到地方发现人没影&…

作者头像 李华
网站建设 2026/9/14 3:42:39

【netty】EventLoop

eventloop 可以处理channel上 accept、read、write等io事件1.单线程执行器2.维护了一个selector如果传入线程数&#xff0c;则使用传入的线程数如果没有传入线程数&#xff0c;则获取配置的线程数 与 系统的cpu核数*2 比大小防。 止存在0线程的情况&#xff0c;所以与1比大小&a…

作者头像 李华
网站建设 2026/9/17 8:18:00

GLM-4.7-Flash参数详解:flash-attn2启用条件、量化选项与推理精度权衡

GLM-4.7-Flash参数详解&#xff1a;flash-attn2启用条件、量化选项与推理精度权衡 1. 模型基础认知&#xff1a;不只是“更快的GLM-4” 你可能已经听说过GLM-4系列&#xff0c;但GLM-4.7-Flash不是简单的小版本迭代。它是一次面向实际部署场景的深度重构——目标很明确&#…

作者头像 李华
网站建设 2026/9/17 15:48:18

GLM-4-9B-Chat-1M代码补全:vLLM支持的IDE插件开发

GLM-4-9B-Chat-1M代码补全&#xff1a;vLLM支持的IDE插件开发 1. 引言 作为一名长期在AI和智能硬件领域工作的工程师&#xff0c;我经常需要处理复杂的代码项目。最近在开发一个大型Python项目时&#xff0c;遇到了一个典型问题&#xff1a;当代码文件超过几千行后&#xff0…

作者头像 李华