给出一个整数数组 A和有序的整数数组 B,请将数组 B合并到数组 A中,变成一个有序的升序数组
注意:
1.可以假设 A数组有足够的空间存放 B数组的元素, A和 B中初始的元素数目分别为 m和 n,A的数组空间大小为 m+ n
2.不要返回合并的数组,返回是空的,将数组 B的数据合并到A里面就好了
3.A数组在[0,m-1]的范围也是有序的
例1:
A: [4,5,6,0,0,0],m=3
B: [1,2,3],n=3
合并过后A为:
A: [1,2,3,4,5,6]
思路:从后往前填,先把最大的往右边放,这样前面的位置会慢慢空出来,这样就不需要全部移动了。
package main
/**
*
* @param A int整型一维数组
* @param B int整型一维数组
* @return void
*/
func merge( A []int , m int, B []int, n int ) {
// write code here
i := m - 1
j := n - 1
for i >= 0 && j >= 0 {
if A[i] < B[j] {
A[i+j+1] = B[j]
j--
} else {
A[i+j+1] = A[i]
i--
}
}
if j >= 0 {
for j >= 0 {
A[j] = B[j]
j--
}
}
}
本文介绍了如何将一个有序整数数组B合并到已有序的整数数组A中,保持数组A有序。通过从后往前填充的方式,避免了大量元素的移动,提高了合并效率。具体实现是使用双指针,从两个数组的末尾开始比较并填充,最后处理剩余的元素。这种方法在处理大数据量时尤为高效。
679

被折叠的 条评论
为什么被折叠?



