1 solutions
-
0
1.冒泡排序+最长平台
时间复杂度()
#include<bits/stdc++.h> using namespace std; //冒泡+最长平台 const int N=110; int a[N]; //原始数组 int main() { int n; cin>>n; for(int i=1;i<=n;i++) //数组 { cin>>a[i]; } for(int i=1;i<=n;i++) //冒泡排序 { for(int j=1;j+1<=n-i+1;j++) { if(a[j]>a[j+1]) { int t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } int cnt=0; //最长平台计算平台数目 for(int i=1;i<=n;i++) { int j=i; while(j<=n&&a[i]==a[j]) j++; j--; cnt++; //平台数目增加一个 i=j; } cout<<cnt<<endl; //最长平台输出每个数 for(int i=1;i<=n;i++) { int j=i; while(j<=n&&a[i]==a[j]) j++; j--; cout<<a[i]<<" "; i=j; } return 0; }
2.标记
标记所有的数组,然后对数据范围进行统计查找
时间复杂度O(n+m)
#include<bits/stdc++.h> using namespace std; //标记 const int M=1010; bool st[M]; //标记数组 int main() { int n; cin>>n; for(int i=1;i<=n;i++) //标记所有的元素 { int x; cin>>x; st[x]=1; } int cnt=0; for(int i=1;i<M;i++) { if(st[i]==1) { cnt++; } } cout<<cnt<<endl;//输出去重以后的元素个数 for(int i=1;i<M;i++) { if(st[i]==1) { cout<<i<<" "; } } return 0; }
3.set
利用set的排序去重,时间复杂度
#include <bits/stdc++.h> using namespace std; int main() { set<int> h; int n; cin>>n; for(int i=1;i<=n;i++) { int m; cin>>m; h.insert(m); //插入元素 } cout<<h.size()<<endl; for(auto x:h) //输出集合中的所有元素 { cout<<x<<" "; } return 0; }
4.使用stl进行排序去重
时间复杂度
#include<bits/stdc++.h> using namespace std; const int N=110; int a[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); //排序 int k=unique(a+1,a+n+1)-(a+1); //去重 cout<<k<<endl; for(int i=1;i<=k;i++) { cout<<a[i]<<" "; } return 0; }
- 1
Information
- ID
- 413
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 7
- Tags
- # Submissions
- 21
- Accepted
- 9
- Uploaded By