问题描述:
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.
代码如下:0ms
void merge(int* nums1, int m, int* nums2, int n) {
int *tmp = (int *)malloc(sizeof(int)*(m+n));
int nums1Index=0,nums2Index=0,tmpIndex = 0;
while(nums1Index<m && nums2Index<n){
if(nums1[nums1Index]<nums2[nums2Index]){
tmp[tmpIndex++] = nums1[nums1Index++];
}else{
tmp[tmpIndex++] = nums2[nums2Index++];
}
}
int i;
if(nums1Index==m){
for(i = nums2Index;i<n;i++)
tmp[tmpIndex++] = nums2[i];
}
else if(nums2Index == n){
for(i = nums1Index;i<m;i++)
tmp[tmpIndex++] = nums1[i];
}
for(i = 0;i<m+n;i++)
nums1[i] = tmp[i];
free(tmp);
}