链接:https://ac.nowcoder.com/acm/contest/19306/1011
来源:牛客网
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
#include<iostream>
using namespace std;
#include<vector>//头文件别忘了
int main()
{
int n,a,j;
cin >>n ;
vector<int>num;//定义一个可变数组num
for (int i = 0; i <n; i++)
{
cin >> a;
num.push_back(a);//加到num数组最后
}
for (int i = 0; i < n; i++)
{
for (j = i+1; j <n; j++)
{
if (num[i] == num[j])
{
num[j] = 'NULL';//如果相等赋NULL指针,这里换成0也可以
}
}
}
vector<int>::iterator it = num.begin();//相当于声明了一个迭代器类型的变量it
//通俗来说就是声明了一个指针变量
for (int i = 0;i<num.size(); i++)
{
if(num[i]!='NULL')
cout << *(it + i) << " ";//访问
}
}
利用vector可变数组来做这道题,因为我刚开始学stl库就拿来用了。想要使用交换来做但是只通过了70%如果有兄弟会的话麻烦教一下我。看到大佬二十几行就搞定了真的佩服,学无止境。