题目
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.
分析
合并两个有序数组,只需要依次比较合并即可,对多余出来的数别忘记添加到序列的最后面。
void merge(int* nums1, int m, int* nums2, int n) {
int i=0,j=0,k=0;
for(i=m+n-1;i>n-1;i--)
{
nums1[i]=nums1[i-n];
}
i=n;
while(i<m+n&&j<n)
{
if(nums1[i]<=nums2[j])
{
nums1[k]=nums1[i];
i++;
k++;
}
else
{
nums1[k]=nums2[j];
j++;
k++;
}
}
while(i<m+n)
{
nums1[k]=nums1[i];
i++;
k++;
}
while(j<n)
{
nums1[k]=nums2[j];
j++;
k++;
}
}
网友评论