题目描述
给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组
注意:
可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和
代码实现
public class Solution {
public void merge(int A[], int m, int B[], int n) {
//dp[i]代表的意思是:第i位置上的值为A与B相比的最小的值
int[] dp = new int[m+n];//临时数组
int i = 0;//A的下标初始值
int j = 0;//B的下标初始值
int index = 0;//dp的下标初始值
while(i<m && j< n){//不到边界
dp[index++] = (A[i]<B[j])? A[i++] : B[j++];
//把最小的值放在dp[index]中,然后对应的下标++
}
while(i < m){//A中剩余的放到临时数组中
dp[index++] = A[i++];
}
while(j < n){//B中的剩余放到临时数组中
dp[index++] = B[j++];
}
for(int k = 0; k < dp.length; k++){//将临时数组的东西放到题目要求的A数组中
A[k] = dp[k];
}
}
}