比链表的合并去重更容易实现。直接上代码,供各位参考。
去重方法:1.用vector<int > vc保存新数组值时:对于有序数组, 新加的数!=数组的最后一个数
2.用set<int>intset;保存自然去重
1.vector
//合并两个有序数组
//void mergeTwoarr(int arr1[], int arr2[])
int arr1[9] = { 1,2,3,4,5, 5, 6, 6, 7 };
int arr2[11] = { 2,3, 4, 4, 5, 6, 8, 8, 9, 10, 11 };
void mergeTwoarr(int arr1[], int arr2[])
{
// int num[] = { 0,1,2,3,4,5,6,7,8,9,10 };
// int len = sizeof(num) / sizeof(num[0]);
printArr(arr1,9);
cout<<"**********************"<<endl;
printArr(arr2,11);
int i = 0, j = 0;
int len1 = 9;
int len2 = 11;
vector <int> vrc;
while (i < len1 && j < len2)
{
if (arr1[i] < arr2[j])
{
//vrc不可为空,len-1会越界
//去重:最后一个数与添加的数不同
int vrclen = vrc.size();
if (vrclen ==0 || vrc[vrclen - 1] !=arr1[i])
{
vrc.push_back(arr1[i]);
}
//注意不管有没有重复都会++;j同理
i++;
}
else
{
int vrclen = vrc.size();
if (vrclen == 0|| vrc[vrclen - 1] != arr2[i])
{
vrc.push_back(arr2[j]);
}
j++;
}
}
//arr1多出来的
while (i < len1)
{
int vrclen = vrc.size();
if (vrclen == 0 || vrc[vrclen - 1] != arr1[i])
{
vrc.push_back(arr1[i]);
}
i++;
}
//arr2多出来的
while (j < len2)
{
int vrclen = vrc.size();
if (vrclen == 0 || vrc[vrclen - 1] != arr2[i])
{
vrc.push_back(arr2[j]);
}
j++;
}
cout << "it****************" << endl;
for (int i = 0; i < vrc.size(); i++)
{
cout <<"vrc[i]=" <<vrc[i] << endl;
}
cout << "it****************" << endl;
for (auto it = vrc.begin(); it != vrc.end(); it++)
{
cout<<*it<<endl;
}
}
2.set
void mergeTwoarrSet(int arr1[], int arr2[])
{
// int num[] = { 0,1,2,3,4,5,6,7,8,9,10 };
// int len = sizeof(num) / sizeof(num[0]);
printArr(arr1, 9);
cout << "**********************" << endl;
printArr(arr2, 11);
int i = 0, j = 0;
int len1 = 9;
int len2 = 11;
set<int>intset;
while (i < len1 && j < len2)
{
if (arr1[i] < arr2[j])
{
intset.insert(arr1[i]);
i++;
}
else
{
intset.insert(arr2[i]);
j++;
}
}
//arr1多出来的
while (i < len1)
{
intset.insert(arr1[i]);
i++;
}
//arr2多出来的
while (j < len2)
{
intset.insert(arr2[j]);
j++;
}
cout << "it****************" << endl;
for (auto it = intset.begin(); it != intset.end(); it++)
{
cout << *it << endl;
}
}
原文链接: https://www.cnblogs.com/jasmineTang/p/14369295.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/327703
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!