Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
方法1:利用方法Arrays.sort(),没有利用nums1与nums2已经是sorted这个特点,测试用例运行时间1ms。
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
if(n==0) return;
int[] num=new int[m+n];
for(int i=0;i<m;i++) num[i]=nums1[i];
for(int j=0;j<n;j++) num[j+m]=nums2[j];
Arrays.sort(num);
for(int k=0;k<m+n;k++) nums1[k]=num[k];
}
}
方法2:利用nums1与nums2已经是sorted这个特点,测试用例运行时间0ms。
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
if(n==0) return;
int count=0;
int[] num=new int[nums1.length];
int index2=0;
int index1=0;
while(index2<n)
{
while((nums2[index2]>nums1[index1])&&(index1<m)) //选nums2
{
num[count++]=nums1[index1++];
}
num[count++]=nums2[index2++];
}
while(index1<m) num[count++]=nums1[index1++];
for(int k=0;k<count;k++) nums1[k]=num[k];
}
}