JS-合并两个有序的数组

JS-合并两个有序的数组

个人学习笔记

题目要求:
给出一个整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组
注意:
1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了
3. A 数组在[0,m-1]的范围也是有序的

示例1:

输入:
[4,5,6],[1,2,3]
返回值:
[1,2,3,4,5,6]
复制
说明:A数组为[4,5,6]B数组为[1,2,3],后台程序会预先将A扩
容为[4,5,6,0,0,0]B还是为[1,2,3],m=3,n=3,传入到函数merge
里面,然后请同学完成merge函数,将B的数据合并A里面,
最后后台程序输出A数组    
思路:
1.首先根据题目的要求可以知道A数组有足够的长度来同时存放自身的数据
和B数组的数据
2.分别定义三个指针
let index = m + n - 1 // index指针指向扩容后数组A的最后的一个位置
let i = m - 1 // i指针指向扩容前数组A的最后一个元素的位置
let j = n - 1 // j指针指向B数组的最后一个元素的位置
3.三个指针根据相应的条件向前移动
如果数组B[j] > A[i] 就将B[j]赋值给当前的index指针的位置 
反之就赋值A[i],之后将和符合要求的数组指针和index指针 同时 -- 
4.如此反复判断赋值即可
注意:这里回出现一个问题如果A数组的第0个位置的元素都比B数组最后一个
位置的数据还大的话,B数组还没遍历完的时候就已经跳出循环了,所以在最后
要判断一下B数组是否还有数据没有合并,如果没有就结束,如果有那么此时
就只需将数组B完整的丢进数组A即可

代码实现:

function merge( A, m, B, n ) {
    // write code here
    // 思路2
   let index = m + n -1
   let i = m - 1
   let j = n - 1
   while(i >= 0 && j >= 0) 
   	   // 思路3
   	   A[index --] = A[i] >= B[j] ? A[i --] : B[j --]
   // 思路4
   while(j >= 0) A[index --] = B[j --]
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值