FDU 2018 | 1. 求众数

1. 题目描述

AcWing 3685 求众数

给定一个长度为 n 的整数序列,请你求出该序列的众数。

众数就是一个序列中出现次数最多的数字。

如果不唯一,则输出小的那个值。

输入格式

第一行输入一个整数 n,表示有 n 个数。
第二行输入 n个整数。

输出格式

输出序列中的众数,如果不唯一,则输出小的那个值。

数据范围
1 ≤ n ≤ 1 0 5 1≤n≤10^5 1n105, 序列中整数的取值范围 [ − 1 0 9 , 1 0 9 ] [−10^9,10^9] [109,109]

输入样例

8
10 3 8 8 3 2 2 2

输出样例

2

2. 我的尝试

数据范围 1 0 5 10^5 105 O ( n l o g n ) O(nlogn) O(nlogn)的算法即可满足,可以先把所有的数读入数组,再对数组排序,然后从头扫描数组找到排序后连续出现最多的数即为众数。

因为题目要求不唯一时输出最小的众数,因此扫描时的更新条件为if (cnt > max)

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;
int a[N];

int main() {
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    
    sort(a, a + n);
    
    int cur = a[0], cnt = 0, res = a[0], max = -1;
    for (int i = 0; i <= n; i++)
    {
        if (i < n && a[i] == cur) cnt ++;
        else {
            if (cnt > max)
            {
                res = cur;
                max = cnt;
            }
            cur = a[i];
            cnt = 1;
        }
    }

    cout << res;
    
}

相关推荐

  1. FDU 2018 | 1.

    2024-03-21 16:18:01       47 阅读
  2. 【数组】-Lc169-(摩尔投票相抵消法)

    2024-03-21 16:18:01       55 阅读
  3. N个整数的平均数、和中位数

    2024-03-21 16:18:01       31 阅读
  4. 7-3

    2024-03-21 16:18:01       63 阅读
  5. 力扣501,二叉树中的

    2024-03-21 16:18:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 16:18:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 16:18:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 16:18:01       87 阅读
  4. Python语言-面向对象

    2024-03-21 16:18:01       96 阅读

热门阅读

  1. el-table原始列表转换成树形数据

    2024-03-21 16:18:01       37 阅读
  2. blender记一下法线烘焙

    2024-03-21 16:18:01       39 阅读
  3. 在springboot中利用Redis实现延迟队列

    2024-03-21 16:18:01       40 阅读
  4. 【linux】grep 命令

    2024-03-21 16:18:01       44 阅读
  5. 【AI】计算机视觉是什么

    2024-03-21 16:18:01       44 阅读
  6. Linux运维_Bash脚本_编译安装PHP-7.4.28

    2024-03-21 16:18:01       38 阅读