leetcode练习
88.合并两个有序数组
public void merge(int[] nums1, int m, int[] nums2, int n) {
//逆向双指针法
int i=m-1;
int j=n-1;
int index=nums1.length-1;
while(i>=0 && j>=0)
{
if(nums1[i]>nums2[j])
nums1[index--]=nums1[i--];
else
nums1[index--]=nums2[j--];
}
while(i>=0)
nums1[index--]=nums1[i--];
while(j>=0)
nums1[index--]=nums2[j--];
}
这是典型的归并排序,但这道题还有另一种思路
public void merge(int[] nums1, int m, int[] nums2, int n) {
System.arraycopy(nums2, 0, nums1, m, n); //将num2中从索引0开始的n个元素复制到num1的索引m之后
Arrays.sort(nums1, 0, m + n);
}