给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6]
输入:nums1 = [1], m = 1, nums2 = [], n = 0 输出:[1]
方法一:
public void merge(int[] nums1, int m, int[] nums2, int n) {
int k=m+n;
int[] temp=new int[k];
for(int i=0,mi=0,ni=0;i<k;i++)
{
if(mi>=m)
{
temp[i]=nums2[ni++];
}
else if(ni>=n)
{
temp[i]=nums1[mi++];
}
else if(nums1[mi]<nums2[ni])
{
temp[i]=nums1[mi++];
}
else {
temp[i]=nums2[ni++];
}
}
for(int i=0;i<k;i++)
{
nums1[i]=temp[i];
}
}
方法二:
public void merge(int[] nums1, int m, int[] nums2, int n) {
for (int i = 0; i != n; ++i) {
nums1[m + i] = nums2[i];
}
Arrays.sort(nums1);
}