刚开始本来想用count[]数组来统计输入的数字作为下标的个数的,但是出现了段错误,数组太大了吧,不知道如何解决,大家可以帮忙看看。以下:

using namespace std;
#define int long long
#define endl '\n'
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    int count[1000000] = {0}; // 初始化数组,确保所有元素为0
    int num;
    for(int i = 0; i < n; ++i) {
        cin >> num;
        count[num]++; // 增加对应数字的计数
    }
    for(int i = 1; i <= 1e9; ++i) {//可能是这个范围太大了出现了段错误,但是修改了也存在段错误的问题
        if(count[i] > n / 2.0) { // 如果某个数字的出现次数超过一半
            cout << i << endl;
            break;
        }
    }
    return 0;
}

然后后面解决不了这个问题放弃了,看了大神的才知道原来可以用排序来解决,排序之后中间的就一定是。

using namespace std;
#define int long long
#define endl '\n'

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    int a[n];
    for(int i = 0; i < n; ++i) {
        cin >> a[i];
    }
    sort(a,a+n);
    cout<<a[n/2]<<endl;//输出排序之后位于中间的位置
    return 0;
}