题目描述
思路-双指针
用到的思路是双指针,这个题目要求不定义别的存储结构直接原地算
在定义一个新的指针作为合并后数组的指针k
因为这两个数字都是有序的,所以对i,j指针进行比较谁大谁放在k指针的位置,循环的条件是i指针大于-并且j指针大于0,然后还要考虑一种情况是j指针如果没有遍历完就把剩下的拷贝到A数组中.
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int i = m - 1;//A数组的指针
int j = n - 1;//B数组的指针
int k = m + n - 1;//合并后数组的指针
while(i >= 0 && j >= 0)//循环的条件是i,j指针都大于0
A[k --] = A[i] > B[j] ? A[i--] :B[j--];//比较谁大谁大就放在k指针的位置
while(j >= 0)//如果B没有遍历完,就都放在A数组里面
A[k --] = B[j--];
}
}