[PAT解题报告] The Dominant Color

众数问题,从m * n个数中找出出现多于一半的数——保证存在。
本质: 同时删掉两个不同的数,众数不变。 于是我们随便记录一个数x, 来一个数 y, 和x不同的话就把x ,y都扔了,相当于扔掉两个不同的数,和x相同的话,就把计数器加1。
所以操作简化为
(1) x出现次数的计数器加1
(2) x出现次数的计数器减1

#include <cstdio>
#include <cstring>
#include <string>

using namespace std;

int main() {
int m,n,answer;
    scanf("%d%d",&m,&n);
    for (int i = m * n, time = 0; i; --i) {
        int x;
        scanf("%d",&x);
        if (time == 0) {
            answer = x;
        }
        if (x == answer) {
            ++time;
        }
        else {
            --time;
        }
    }
    printf("%d\n",answer);
    return 0;
}


原题链接: http://www.patest.cn/contests/pat-a-practise/1054
全部评论
这平台好耗内存啊pat上提交308k这里居然有7w多直接ole。。。。。。
点赞 回复 分享
发布于 2015-09-11 16:33

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务