编程:在一个整数的数组中删除另外一个整数数组中的元素,并保留原数组的次序
输入包括两行:
- 第一行是被删除的整数列表(记为列表A),每个整数之间使用空格分隔
- 第二行是需要删除的整数列表(记为列表B),每个整数之间使用空格分隔
输出只有一行,即列表A中删除列表B元素后的整数列表,输出元素按照在列表A中的次序排列,每个整数之间使用空格分隔
样例输入:
1 2 3 4 5
2 4
样例输出:
1 3 5
#include<iostream>
#include<string>
#include<vector>
#include<unordered_set>
#include<list>
using namespace std;
int main()
{
list<int> srcList;
unordered_set<int> delSet;
int data = 0;
char ch;
string srcdata;
for (;;)
{
ch = getchar();
if (ch != ' ' && ch != '\n')
{
srcdata.push_back(ch);
}
else
{
if (!srcdata.empty())
{
srcList.push_back(atoi(srcdata.c_str()));
srcdata.clear();
}
if (ch == '\n')
break;
}
}
for (;;)
{
ch = getchar();
if (ch != ' ' && ch != '\n')
{
srcdata.push_back(ch);
}
else
{
if (!srcdata.empty())
{
delSet.insert(atoi(srcdata.c_str()));
srcdata.clear();
}
if (ch == '\n')
break;
}
}
auto it = srcList.begin();
while (it != srcList.end())
{
if (delSet.count(*it) > 0)
{
it = srcList.erase(it);
}
else
{
++it;
}
}
for (it = srcList.begin();
it != srcList.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
结果为: