首页 > 其他 > 详细

hdu 1029 求出现次数过半的数

时间:2019-09-25 22:25:04      阅读:113      评论:0      收藏:0      [点我收藏+]

题目传送门//res tp hdu

已知必定存在一个元素出现次数超过一半,考虑用栈
若当前元素等于栈顶元素,入栈,反之出栈,并将当前元素入栈
最终的栈顶元素即是所求

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i = (a);i>=(b);--i)
#define fo(i,a,b) for(int i =(a);i<(b);++i)
#define de(x) cout<<#x<<" = "<<x<<endl;
#define endl '\n'
#define ls(p) ((p)<<1)
#define rs(p) (((p)<<1)|1)
using namespace std;
typedef long long ll;
const int mn = 1e6+10;
int n;
ll Top,t;
int cnt;
// stack
int main(){
    while(scanf("%d",&n)!=EOF){
        cnt = 1;
        scanf("%lld",&Top);
        rep(i,2,n){
            scanf("%lld",&t);
            if(t == Top)++cnt;
            else{
                if(cnt == 1)
                    Top = t;
                else{
                    --cnt;
                }
            }
        }
        printf("%lld\n",Top);
        
        
    }
    
    
    
}

hdu 1029 求出现次数过半的数

原文:https://www.cnblogs.com/tea-egg/p/11587358.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!