CCF刷题之旅--第一题

tech2023-02-08  102

寻找出现次数最多的数

题目描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。

输出 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。

#include <iostream> using namespace std; /* * * 利用哈希表来表示每个数出现的次数 * step1:创建一个哈希数组 * step2:每个数字带表了数组的下标 * step3:,每次出现一个数字则数组的值加一 * step4:在通过遍历数组找到数组的值最大的那个并且将其赋值给要求的出现次数最多的数字(由于数组的下标是从0开始的,所以不需要另外比较相同次数中较小的那个数字) */ int main() { int s[1000] = { 0 }; int n; int num,ans; int flag = 0;//标志着每个数字出现的次数 int max = 0;//找到最大的数字 cin >> n; for (int i = 0; i < n; i++) { cin >> num; s[num]++; if (num > max) { max = num; } } for (int i = 0; i <= max; i++) { if (s[i] > flag)//这里为>而不是>=(用来比较出现次数的多少) { flag = s[i]; ans = i;//ans代表着找到的那个数字 } } cout << ans; }
最新回复(0)