CCF出现次数最多的数( 满分代码 + 解题思路 + 技巧总结)2013-12-01

应试技巧

  1. 代码开头写上下面三个头文件(包含了一般要使用的文件)
#include <iostream>
#include <cstring>
#incldue <algorithm>
  1. 数组比边界范围多开十个单位(防止越界)

  2. 如果输入的数据小于十万用cin 或 scanf 均可,大于十万用scanf(输入速度更快)

  3. 时间限制1~2s,表示c++代码总操作次数为一千万到一亿为最佳,所以想出一种思路时,可以自己预估一下时间复杂度是否会超时

  4. 时间和空间允许的条件下,写出最快能写出来并且AC的代码(不求最优算法,不求代码过分精简–容易出bug)

题目

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QMDbI0Cq-1635424924031)

解题思路

数组模拟哈希表(用于记录每个数字出现的个数),遍历一遍哈希表找出现自处最多且值最小的数

时间复杂度预估:1000 + 10000(1000为读入数组 ,10000为遍历数组)

代码实现

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int N = 10010;

int a[N]; //用数组模拟哈希表,下标为当前出现的数,数组内部记录该数出现的次数
int n;

int main()
{
    cin >> n;
    
    for (int i = 0; i < n; i ++)
    {
        int x;
        cin >> x;
        a[x] ++;
    }
    
    int res = 0; //记录出现最大那个数
    
    for (int i = 0; i < N; i ++)
    {
        if(a[i] > a[res]) res = i;
    }
    
    cout << res;
    return 0;
}
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只可爱的小猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值