社区讨论

不懂就问

B4277[蓝桥杯青少年组国赛 2023] 主要成分参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhjdr7k6
此快照首次捕获于
2025/11/04 00:54
4 个月前
此快照最后确认于
2025/11/04 00:54
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int a[N],n,mx;
map<int,int> mp;
int main(){
    cin>>n;
    for(int i = 0;i<n;i++){
        cin>>a[i];
        mp[a[i]]++;
        if(mp[a[i]]>=n/2){
            cout<<a[i]<<endl;
            return 0;
        }
    }
    cout<<"No"<<endl;
    return 0;
}
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int a[N],n;
int main(){
    cin>>n;
    for(int i = 0;i<n;i++){
        cin>>a[i];
    }
    sort(a,a+n);
    int cnt = 1;
    for(int i = 0;i<n-1;i++){
        if(a[i] == a[i+1])
            cnt++;
        else{
            if(cnt>=n/2){
                cout<<a[i]<<endl;
                return 0;
            }
            cnt = 1;
        }
    }
    cout<<"No"<<endl;
    return 0;
}
请教大佬,这两段代码的时间复杂度不都是O(nlogn)O(nlogn)吗?为什么第一段会超时?

回复

4 条回复,欢迎继续交流。

正在加载回复...