一组数列已经排序,需要去除其中重复的数,同时输出去除重复数之后数列的长度。
有两种方法。
1、使用c++的STL中的unique函数来实现
#include<iostream>
#incnlude<algorithm>
#include<vector>
using namespace std; int main() { vector<int> vec; int n; cin >> n; for(int i = 0; i < n; i++) { int value; cin >> value; vec.push_back(value); }
//若无序,则使用sort函数排个序
sort(vec.begin(),vec.end());
erase(unique(vec.begin(),vec.end()),vec.end());
cout << vec.size() << endl;
return 0;
}
2、不使用unique
#include<iostream> #include<vector> using namespace std; int main() { vector<int> vec; int n; cin >> n; for(int i = 0; i < n; i++) { int value; cin >> value; vec.push_back(value); } int index = 0; for(int i = 1; i < n; i++) { if(vec[index] != vec[i]) vec[++index] = vec[i]; } cout << index+1 << endl; for(int i = 0; i < index+1; i++) cout << vec[i] << " "; return 0; }