A37444. 主要成分背景信息:金星是离地球最近的行星,人类发射的“金星快车”探测器的主要任务是对金星大气层进行精确的探测,分析其化学成分。
填空题
困难
知识点
题目描述
主要成分
背景信息:
金星是离地球最近的行星,人类发射的“金星快车”探测器的主要任务是对金星大气层进行精确的探测,分析其化学成分。
题目描述:
从金星探测器传回来一组测量数据,这是一个长度为N(1≤N≤1000000)的整数数列,数列中的每个整数代表某一种化学成分(相同的整数代表相同的化学成分)。
主要成分:指在包含的所有化学成分中比例超过一半(N÷2的结果向下取整)的成分。
现在要判断其是否有主要成分;如果有,其主要成分是哪一种?
例如:
当N=7,整数数列为1 2 3 2 2 1 2,其中成分2有4个,超过了7的一半(7的一半向下取整为3),所以主要成分是2。
当N=6,整数数列为1 102 31 31 1 102,其中的每一种成分都只有2个,未超过6的一半(6的一半为3),所以没有主要成分。
输入描述
第一行输入一个正整数N(1≤N≤1000000),表示数列长度
第二行输入N个整数(1≤整数≤2×109),每个整数表示一种化学成分,两个整数之间用一个空格隔开
输出描述
输出一行,如果存在主要成分,则输出代表主要成分的整数,否则,输出No
样例输入
7
1 2 3 2 2 1 2
样例输出
2
参考答案
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int a[N];
unordered_map<int, int> _map;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i], _map[a[i]]++;
bool flag = false;
for (int i = 1; i <= n; i++)
if (_map[a[i]] > n / 2) {
cout << a[i];
flag = true;
break;
}
if (!flag) cout << "No";
return 0;
}
上一题
下一题