问题:
两个顺序数组分别为num1,num2,长度分别为=m,n,如何转换为一个数组?
要求:
转换为一个有顺序的数组
解决:
public void getOne(int[] nums1, int m, int[] nums2, int n) {
// Make a copy of nums1.
int [] nums1_copy = new int[m];
System.arraycopy(nums1, 0, nums1_copy, 0, m);
// Two get pointers for nums1_copy and nums2.
int p1 = 0;
int p2 = 0;
// Set pointer for nums1
int p = 0;
// Compare elements from nums1_copy and nums2
// and add the smallest one into nums1.
while ((p1 < m) && (p2 < n))
nums1[p++] = (nums1_copy[p1] < nums2[p2]) ? nums1_copy[p1++] : nums2[p2++];
// if there are still elements to add
if (p1 < m)
System.arraycopy(nums1_copy, p1, nums1, p1 + p2, m + n - p1 - p2);
if (p2 < n)
System.arraycopy(nums2, p2, nums1, p1 + p2, m + n - p1 - p2);
}
System.arraycopy(nums1, 0, nums1_copy, 0, m) 解析:
nums1:原对象数组
0:原对象数组开始复制的下标
nums_copy:目标数组
0:目标数组开始接受的下标
m:两个数组的长度