题解 | #合并两个有序的数组#

合并两个有序的数组

http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665

主要思想归并排序中的合并

  1. 用两个指针和一个辅助数组
  2. p1 指向 A的第一个索引, p2 指向 B的第二个索引
  3. 然后进行比较,最终会有一个指针越界。

复杂度

  • 排序的时间复杂度:O(n+m)
  • 空间复杂度:O(n+m)
/**
 * 
 * @param A int整型一维数组 
 * @param B int整型一维数组 
 * @return void
 */

function merge( A, m, B, n ) {
    // write code here
       let help = new Array(m+n)
       let i = 0,
           p1 = 0,
           p2 = 0;
        while(p1 <= m-1 && p2 <= n -1) {
            help[i++] = A[p1] < B[p2] ? A[p1++] : B[p2++]
        }
        
        // p1, p2两个必须且只有一个越界
        while(p1 <= m - 1) {
            help[i++] = A[p1++]
        }
        while(p2 <= n - 1) {
            help[i++] = B[p2++]
        }
        
        for(i = 0; i < m+n; i++) {
            A[i] = help[i]
        }
        return A
   
}
module.exports = {
    merge : merge
};
全部评论

相关推荐

06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务