给出一个整数数组 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--
}
}
}