1)题目
合并排序数组 II
要求:
合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。
样例:
输入: A=[1], B=[1]
输出:[1,1]
样例解释: 返回合并后的数组。
2)思路
用两个指针分别遍历两个数组,然后比较对应位置的值,小的添加到新的数组里面,然后指针加1;若两个值相等,都添加到新的数组里,然后两个指针都加1;结束上述操作后,把长的数组里面剩下的数字依次添加到新数组里。
3)代码
class Solution {
public:
/**
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
int i=0,j=0;
vector<int>C;
for(i=0,j=0;i<A.size()&&j<B.size();)
{
if(A[i]<B[j])
{
C.push_back(A[i]);
i++;
}
else if(A[i]>B[j])
{
C.push_back(B[j]);
j++;
}
else if(A[i]==B[j])
{
C.push_back(A[i]);
C.push_back(B[j]);
i++;
j++;
}
}
for(int m=i;m<A.size();m++)
{
C.push_back(A[m]);
}
for(int m=j;m<B.size();m++)
{
C.push_back(B[m]);
}
return C;
}
};