1、移除重复的元素
2、将剩下的元素右移
3、左侧进行补1操作
vector<int> deleteDuplicateNumber(vector<int> a, int elem)
{
vector<int> res(a.size(), 1);
vector<int> k;
int count = 0;
for (int i = 0; i < a.size(); i++)
{
if (a[i] != elem)
k.push_back(a[i]);
else
count++;
}
for (int i = 0; i < k.size(); i++)
{
res[count] = k[i];
count++;
}
return res;
}
int main()
{
int N;
cout << "输入数组的个数:";
cin >> N;
vector<vector<int> > a;
vector<vector<int> > b;
a.resize(N);
b.resize(N);
int i = 0;
while (N--)
{
cout << "输入第"<<i+1<<"个数组元素的个数:";
int number;
cin >> number;
cout << "输入数组元素:";
while (number--)
{
int num;
cin >> num;
a[i].push_back(num);
}
cout << "输入要删除的元素:";
int elem;
cin >> elem;
b[i] = deleteDuplicateNumber(a[i], elem);
i++;
}
cout << "删除元素后:"<<endl;
for (size_t i = 0; i < b.size(); i++)
{
cout << "第" << i + 1 << "个数组元素:";
for (size_t j = 0; j < b[i].size(); j++)
{
cout << b[i][j] << " ";
}
cout << endl;
}
return 0;
}
//scanf输入
#include<unordered_map>
#include<iostream>
#include<vector>
using namespace std;
vector<int> my(vector<int> vec, int n)
{
vector<int> res(vec.size(), 1);
vector<int> k;
int count = 0;
for (int i = 0; i < vec.size(); i++)
{
if (vec[i] != n)
k.push_back(vec[i]);
else
count++;
}
for (int i = 0; i < k.size();i++)
{
res[count] = k[i];
count++;
}
return res;
}
void show_my(vector<int> vec)
{
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
cout << endl;
}
int main()
{
int n;
scanf("%d",&n);
while (n>0)
{
int num;
scanf("%d", &num);
vector<int> vec(num, 0);
int number;
for (int i = 0; i < num; i++)
{
scanf("%d", &number);
vec[i] = number;
}
int des;
scanf("%d", &des);
vector<int> res;
res = my(vec, des);
show_my(res);
n--;
}
system("pause");
return 0;
}