给定两个有序整数数组 nums1 和 nums2,合并nums1和nums2为有序数组
输入:
nums1 = [1,2,3], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
**解题思路:**先求出两个数组的大小,开辟一个新数组来保存合并之后的数据,给两个指针指向两个数组中最后一个元素,判断如果第一个数组最后一个元素小于第二个数组最后一个元素,把第二个数组最后一个元素赋给开辟新数组的最后一个元素,然后第二个指针向前跑,新数组的下标减减,反之,把第一个数组最后一个元素赋给开辟新数组的最后一个元素,然后第一个指针向前跑,新数组的下标减减,循环执行,最后如果第一个数组元素个数大于第二个数组元素个数,将第一个数组元素连在新数组上,反之,将第二个数组元素链在新数组上.
代码:
//合并两个有序数组
vector<int> Merge(vector<int> arr,vector<int> brr)
{
int arrlen=arr.size();
int brrlen=brr.size();
int i=arrlen-1;
int j=brrlen-1;
int m=arrlen+brrlen-1;
vector<int> vec(m+1);
while(i>=0&&j>=0)
{
if(arr[i]>brr[j])
{
vec[m]=arr[i];
i--;
m--;
}
else if(arr[i]<brr[j])
{
vec[m]=brr[j];
j--;
m--;
}
}
while(j>=0)
{
vec[m]=brr[j];
j--;
m--;
}
while(i>=0)
{
vec[m]=arr[i];