当前位置: 首页 > news >正文

合并两个有序数组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]

http://www.jsqmd.com/news/368702/

相关文章:

  • 2026年访客系统定制公司权威推荐:会议室预订管理系统、会议预约系统定制、会议预约系统研发公司、工位系统定制选择指南 - 优质品牌商家
  • 2026年浴室家具定制精选:三家顶尖厂商深度解析 - 2026年企业推荐榜
  • 2026年冷挤压厂家权威推荐榜:冷挤压件加工/冷挤压加工厂/冷挤压厂/冷挤压厂家/冷挤压成型/冷挤压零件供应商/选择指南 - 优质品牌商家
  • 深度优先搜索(dfs)与广度优先搜索(bfs)
  • 2026支吊架厂家推荐指南:弹簧支吊架厂家+管道支架厂家+管托厂家推荐 - 栗子测评
  • 2026年金属冷挤压供应商厂家权威推荐榜:花键套冷挤压件/冷挤压产品供应商/冷挤压件供应商/冷挤压件加工/选择指南 - 优质品牌商家
  • 2026年江苏金属锥体采购指南:技术、品牌与选型深度解析 - 2026年企业推荐榜
  • 2026年Q1江苏封头制造厂综合选购指南与官网解析 - 2026年企业推荐榜
  • 驾驭数据洪流:深度探索 psycopg2 的高级特性与性能哲学
  • 2026年冷挤压供应商公司权威推荐:冷挤压成型/冷挤压零件供应商/碳钢冷挤压/精密冷挤压/花键套冷挤压件/选择指南 - 优质品牌商家
  • 2026西安近视防控眼镜选型指南:科学评估与核心服务商解析 - 2026年企业推荐榜
  • 2026年Q1西安青少年近视矫正机构深度评测与选择指南 - 2026年企业推荐榜
  • 2026年Q1无局放试验变压器优质服务商盘点与选购指南 - 2026年企业推荐榜
  • 2026年武汉无形资产实缴服务商综合实力深度评测 - 2026年企业推荐榜
  • 2026年上海浴室家具定制服务商综合盘点 - 2026年企业推荐榜
  • 2026年碳钢冷挤压厂家推荐:冷挤压零件供应商/花键套冷挤压件/金属冷挤压供应商/冷挤压产品供应商/选择指南 - 优质品牌商家
  • 百度泛站 - 蜘蛛池:动态匹配百度算法​
  • AAAI2026 | 针对LLM外部推理的因果奖励调整方法
  • 2026年优秀汽车玻璃代理商盘点与选择指南 - 2026年企业推荐榜
  • 山东小动物超声维修服务商综合评测与头部品牌推荐 - 2026年企业推荐榜
  • 2026年初阜阳软床家具选购指南与品牌推荐 - 2026年企业推荐榜
  • OpenClaw 给了每个人“数字分身“,但企业更需要可靠的 AI 员工
  • 2026年江苏封头制造企业综合评估与选择策略 - 2026年企业推荐榜
  • 2026年精密冷挤压公司权威推荐:冷挤压件加工/冷挤压加工厂/冷挤压厂/冷挤压厂家/冷挤压成型/选择指南 - 优质品牌商家
  • 硬件版“龙虾助理”,这不就来了?
  • 2026年冷挤压零件加工公司权威推荐:冷挤压件加工、冷挤压厂、冷挤压厂家、冷挤压工艺、冷挤压成型选择指南 - 优质品牌商家
  • 2026年评价高的冷挤压加工厂公司推荐:花键套冷挤压件、冷挤压产品供应商、冷挤压件供应商、冷挤压件加工选择指南 - 优质品牌商家
  • 2026年温州球形浓缩器优质厂家综合选购深度解析 - 2026年企业推荐榜
  • 2026年GEO优化OEM服务商选型全景洞察与深度解析 - 2026年企业推荐榜
  • VibeCoding小白必读,从「单间工作室」到「全球城市」#系统扩展的7个软件架构阶段