#include<iostream>
#include<vector>
using namespace std;
vector<int> mergearray(vector<int> arr1,vector<int> arr2)
{
vector<int> res;
if(arr1.empty()&&arr2.empty())
return res;
if(arr1.empty())
return arr2;
if(arr2.empty())
return arr1;
int i=0,j=0;
int n1=arr1.size(),n2=arr2.size();
while(i<n1&&j<n2)
{
if(i>0 && (arr1[i]==arr1[i-1]) )
i++;
if(j>0 && (arr2[j]==arr2[j-1]))
j++;
if(i<n1 && j<n2 && arr1[i]<arr2[j])
{
res.push_back(arr1[i]);
i++;
}
else if(i<n1 && j<n2 && (arr1[i]==arr2[j]))
{
res.push_back(arr1[i]);
i++;
j++;
}
else
{
if(j<n2)
{
res.push_back(arr2[j]);
j++;
}
}
}
while(i<n1)
{
if(res.back()!=arr1[i])
res.push_back(arr1[i]);
i++;
}
while(j<n2)
{
if(res.back()!=arr2[j])
res.push_back(arr2[j]);
j++;
}
return res;
}
int main()
{
vector<int> arr1={-1,1,1,2,4,10};
vector<int> arr2={-1,3,5,6,7,8,8};
vector<int> res=mergearray(arr1,arr2);
for(int i=0;i<res.size();i++)
cout<<res[i]<<" ";
}
合并两个有序数组,数组中包含有重复元素
最新推荐文章于 2023-09-06 18:17:17 发布