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

合并两个有序的数组

题目

  • 描述:给出两个已按升序排列的整数数组AB,将B合并进A,使A仍为升序有序数组
  • 数据范围0 < n, m ≤ 100|A[i]| ≤ 100|B[i]| ≤ 100
  • 注意点
    1. A预留了足够空间容纳BA的总容量为m+n),初始有效元素个数分别为mn
    2. 不需要返回合并后的数组,直接在A内完成合并;评测会自动输出合并后的A
    3. A[0..m-1]本身是有序的。
  • 示例
    • 输入:[4,5,6],[1,2,3]→ 输出:[1,2,3,4,5,6]
    • 输入:[1,2,3],[2,5,6]→ 输出:[1,2,2,3,5,6]

https://www.nowcoder.com/questionTerminal/89865d4375634fc484f3a24b7fe65665

思路一:从后往前合并 + 双指针⭐

用“从后往前合并”的思路(双指针):

  • 已知A的前m个元素有序,B的前n个元素有序,且A末尾有n个空位可用。
  • 如果从前往后插入,遇到要插入的元素就得把A后面的元素整体右移,代价高且容易覆盖数据。
  • 所以反过来:从两个数组的“尾部”开始比较,把更大的那个放到A的最后空位。

具体做法:

  1. 设三个指针

    • i = m-1指向A有效部分的最后一个
    • j = n-1指向B的最后一个
    • k = m+n-1指向A的最后位置(空位末端)
  2. 循环直到B用完(j < 0

    • i >= 0A[i] > B[j]:说明当前最大的在A[i],放到A[k],然后i--, k--
    • 否则:放B[j]A[k],然后j--, k--
  3. 为什么循环条件用while (j >= 0)

    • 如果B已经放完了,A剩下的本来就在前面且有序,不用动。
    • 如果A先用完(i < 0),那就把B剩余的全部拷到A前面即可(代码里的 else 分支自然完成)。

publicclassSolution{publicstaticvoidmerge(int[]A,intm,int[]B,intn){inti=m-1,j=n-1,k=m+n-1;while(j>=0){if(i>=0&&A[i]>B[j])A[k--]=A[i--];elseA[k--]=B[j--];}}}

思路二:从前往后合并 + 双指针

publicstaticvoidmerge(int[]A,intm,int[]B,intn){intj=0;// B 的指针intcurLen=m;// A 当前有效长度(会增长)for(inti=0;i<curLen&&j<n;i++){if(A[i]>B[j]){// 把 A[i..curLen-1] 整体右移一位,腾出 A[i]for(intk=curLen;k>i;k--){A[k]=A[k-1];}A[i]=B[j];j++;curLen++;}}// A 扫完了但 B 还有剩:直接追加到末尾while(j<n){A[curLen++]=B[j++];}}
http://www.jsqmd.com/news/560817/

相关文章:

  • 终极指南:如何为HexFiend十六进制编辑器实现完美国际化支持
  • 告别喧嚣,回归纯粹:铜钟音乐让你重新爱上聆听的艺术
  • 简单几步,让AI帮你画瑜伽女孩:雯雯的后宫-造相Z-Image-瑜伽女孩模型使用教程
  • BewlyBewly终极指南:5大功能模块重塑你的B站体验
  • 小型物联网系统——家居网关设计(C语言实现)
  • 量化模型实测:百川2-13B-4bits在OpenClaw复杂任务中的精度损失
  • Cowabunga Lite:iOS系统个性化定制的免越狱解决方案
  • AI报告文档审核助力食品飞检常态化应对:IACheck下的风险防控与质量管控重构
  • Serious Engine调试与错误处理:常见问题解决方案
  • 价值驱动计费:如何通过3大突破构建SaaS业务增长引擎
  • 【模型手术室】第九篇:多模态微调 —— 让模型学会“看图说话”:从像素到行业认知的飞跃
  • 别再吹牛了,100% Vibe Coding 存在无法自洽的逻辑漏洞!
  • 如何便捷回收步步高购物卡,新模式下如何变现 - 淘淘收小程序
  • 闲置加油卡回收攻略:线上渠道哪个更适合你? - 团团收购物卡回收
  • MusePublic效果展示:多主体构图稳定性测试——双人/三人场景自然互动生成
  • 唯一的全家福,模糊褪色。用修复旧照片软件,让所有人重聚在一起
  • 智能泡茶机(有完整资料)
  • Balena Etcher:革新性镜像烧录的安全解决方案
  • Scikit-learn PCA降维超快
  • 2026年3月金属漆厂家推荐,水性金属漆、水性电机金属漆、双组份金属漆,高耐候防腐长效防护实力源头厂商 - 品牌企业推荐师(官方)
  • matlab-ROI区域选择
  • 为什么Efficient Attention能大幅降低计算成本?深入解析线性复杂度注意力机制
  • Fast-F1终极指南:Python赛车数据分析完整教程
  • 如何用foobox-cn打造专属网络电台中心:从安装到精通的全方位指南
  • 中国DevOps工具链选型新趋势:合规、协同与生态融合的平衡之道
  • MLGO微算法科技分布式量子算法模拟技术:以动态量子电路推动可扩展量子计算
  • OpenClaw架构全解析:从核心分层到执行链路,吃透本地AI Agent底层设计 - PC修复电脑医生
  • 金相抛光剂品牌 / 厂家 / 供应商盘点,专业角度教你怎么选 - 品牌推荐大师
  • 避坑指南:Milvus企业部署中5个容易忽略的关键配置(含MinIO/etcd调优)
  • 2026降AI率工具红黑榜:降AI率平台怎么选?一篇看懂