计蒜客--移除数组中的重复元素 (set)
给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度。
例如:数组 A = \{1, 1, 2\}A={1,1,2},你的程序应该输出 22 即新数组的长度,新数组为 \{1, 2\}{1,2}。
要求:不能新开数组分配额外的空间,即常数空间限制。
输入格式
输入一个整数 n(1 \leq n \leq 1000)n(1≤n≤1000)。
接下来一行 nn 个整数 A_i(-1000 \leq A_i \leq 1000)Ai(−1000≤Ai≤1000),表示数组 AA 中的每个元素。
输出格式
输出一个整数,表示新数组长度。
样例输入
5 0 0 1 1 2
样例输出
3
题解:set基本用法
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <vector> 6 #include <cstdlib> 7 #include <iomanip> 8 #include <cmath> 9 #include <ctime> 10 #include <map> 11 #include <set> 12 #include <queue> 13 using namespace std; 14 #define lowbit(x) (x&(-x)) 15 #define max(x,y) (x>y?x:y) 16 #define min(x,y) (x<y?x:y) 17 #define MAX 100000000000000000 18 #define MOD 1000000007 19 #define pi acos(-1.0) 20 #define ei exp(1) 21 #define PI 3.141592653589793238462 22 #define INF 0x3f3f3f3f3f 23 #define mem(a) (memset(a,0,sizeof(a))) 24 typedef long long ll; 25 ll gcd(ll a,ll b){ 26 return b?gcd(b,a%b):a; 27 } 28 bool cmp(int x,int y) 29 { 30 return x>y; 31 } 32 const int N=10005; 33 int main() 34 { 35 std::ios::sync_with_stdio(false); 36 set<int> v; 37 int n,t; 38 cin>>n; 39 for(int i=0;i<n;i++){ 40 cin>>t; 41 v.insert(t); 42 } 43 int len=v.size(); 44 cout<<len<<endl; 45 return 0; 46 }