思路:可以使用哈希的思想来解决该问题,以空间换取时间
#include <vector>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <boost/smart_ptr.hpp>
using namespace std;
int extra_nonrepeat(vector<int> &v)
{
vector<int>::iterator it=v.begin();
int *arr = new int[v.size()];
memset(arr, 0, sizeof(arr));
//shared_array<int> sa(arr);
int left=0;
for(; it!=v.end(); it++)
{
arr[*it]++;
}
for(int i=0; i<v.size(); i++)
{
if(arr[i]!=0) //数组中有该元素
v[left++] = i;
}
delete[] arr;
return left; //返回的是数组中非重复整数的个数
}
int main(void)
{
//int arr[] = {1, 2, 2, 4, 5, 4};
vector<int> v(5);
int i=0;
for(i=0; i<5; i++)
{
scanf("%d", &v[i]);
}
int left=extra_nonrepeat(v);
for(i=0; i<left; i++)
cout << v[i] << " ";
cout << endl;
return 0;
}