帮帮我吧!题目ID:1204

#include<bits/stdc++.h>
using namespace std;
long long a[1005];
long long b[100000];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		b[a[i]]++;
	}
	for(int i=0;i<n;i++){
		if(b[i]>=n/2){
			cout<<i<<" ";
		}
	}
    return 0;
}
1 个赞

题目:

39. 出现次数超过一半的数

题目ID:1204必做题100分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

0 分

时间限制: 1000ms

空间限制: 65536kB

题目描述

时间:1s 空间:256M

题目描述:

给你n个数,有一个数的出现次数超过一半,找出这个数。

输入格式:

输入两行。

第一行包含一个整数�n

第二行包含�n个整数��ai​

输出格式:

输出一行,包含一个整数。

样例输入:

5 1 2 2 3 2

样例输出:

2

约定:

1<=�<=1000,1<=��<=1000000000 1<=n<=1000,1<=ai​<=1000000000

提示:

水题,只需要一个数组记录每个数的出现次数,在判断输出即可
核心代码

    int n, f, x = 0;
    cin >> n;
    int a[n], b[n];
    bool flag1 = 0;

    for (int i = 0; i < n; i++) {
        cin >> f;
        for (int j = 0; j < x; j++) {
            if (f == b[j]) {
                ++a[j];
                flag1 = 1;
            }
        }
        if (!flag1) {
            b[x] = f;
            a[x] = 1;
            ++x;
        }
        flag1 = 0;
    }

    for (int k = 0; k < x; k++) {
        if (a[k] * 2 > n) {
            cout << b[k];
            return 0;
        }
    }

解决方案

1 个赞

意外发现一个linan大佬

1 个赞

没有没有,你过奖了,我才学到基础算法三

顶多算个小佬 :upside_down_face:

1 个赞