news 2026/6/10 21:00: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/6/10 13:55:31

深度优先搜索(dfs)与广度优先搜索(bfs)

深度优先搜索&#xff08;dfs&#xff09; 1.深度优先搜索的原理 深度优先搜索&#xff0c;顾名思义&#xff0c;搜到底才退回来&#xff0c;我们可以这么比喻&#xff1a; 这里有一个迷宫&#xff0c; 你会怎么走&#xff1f;是不是直接直走&#xff0c;然后右转&#xff…

作者头像 李华
网站建设 2026/6/10 14:20:24

硬件版“龙虾助理”,这不就来了?

随着 Clawdbot&#xff08;后更名为Moltbot、OpenClaw&#xff09;、Nanobot的火爆&#xff0c;云端搭建和本地部署结合的文章层出不穷。那么&#xff0c;既然 Clawdbot、Nonobot 可以在手机、ipad 等平台被部署使用&#xff0c;那么智能终端是否也可以&#xff1f;想像一下&am…

作者头像 李华
网站建设 2026/6/10 14:20:41

AAAI2026 | 针对LLM外部推理的因果奖励调整方法

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入&#xff01;近日&#xff0c;天基全重实验室研究团队的论文“Causal Reward Adjustment: Mitigating Reward Hacking in External Reasoning via Backdoor Correction”被人工智能会议大会&#xff08;The 40th Annual AAAI C…

作者头像 李华
网站建设 2026/6/10 16:08:01

智算中心,到底需要多少光纤?

国内光纤价格持续上涨。2026年1月&#xff0c;最新的G.652.D散纤价格已超过40元/芯公里&#xff0c;近一年的涨幅超过50%。涨价的原因&#xff0c;有专家认为主要是由于智算中心建设需求激增导致的。那么&#xff0c;智算中心建设&#xff0c;对光纤的需求到底有多大呢&#xf…

作者头像 李华
网站建设 2026/6/10 13:22:26

人、机中的道与德

“人、机中的道与德”这一命题&#xff0c;将中国传统哲学中的“道”“德”概念延伸至人机关系的场域&#xff0c;既需回归经典对“道”“德”的核心诠释&#xff0c;又需结合人机互动的现代语境展开。其中“道涉阴阳”指向宇宙运行的根本规律与动态平衡&#xff0c;“德含本性…

作者头像 李华
网站建设 2026/6/10 15:38:53

【ESP32-S3】WINDOWS+VMware+ROS2+YDLIDA X2导航测试

【ESP32-S3】WINDOWSVMwareROS2YDLIDA X2导航测试背景一、核心软硬件清单&#xff08;适配WindowsVMware环境&#xff09;二、详细实现步骤步骤1&#xff1a;VMware安装并配置Ubuntu 22.04&#xff08;Windows宿主机&#xff09;1.1 准备安装文件1.2 创建并安装Ubuntu虚拟机1.3…

作者头像 李华