Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
The numberof elements initialized in nums1 and nums2 are m and n respectively.
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.
Example:
Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3Output: [1,2,2,3,5,6]
解答
import java.util.Arrays;
/**
*类似于归并排序,会归并排序的童靴应该没毛病
*/publicclassMergeSortedArray {publicstaticvoidmerge(int[] nums1, int m, int[] nums2, int n) {
int p1 = 0; //指针1,记录nums1对应的下标int p2 = 0; //指针2,记录nums2对应的下标int [] arr = newint[n+m];
int i=0; //指向arrwhile(p1 < m && p2 < n){ //p1 或者p2 走到末端剩下的元素直接放入arr
arr[i++] = nums1[p1] < nums2[p2] ? nums1[p1++] : nums2[p2++]; //p1、p2指针下的元数放入arr
}
while (p1 < m){ //p2走到头把nums1剩下的元素放入arr
arr[i++] = nums1[p1++];
}
while (p2 < n){ //p1走到头把nums2剩下的元素放入arr
arr[i++] = nums2[p2++];
}
System.out.println(Arrays.toString(arr));
}
publicstaticvoidmain(String[] args) {
int[] nums1={1,2,3,0,0,0};
int[] nums2={2,5,6};
merge(nums1,3,nums2,3);
}
}