Ignatius and the Princess IV c++
先搬中文spa
本題包含多組數據,請處理到EOF: 每組數據包含兩行。 第一行一個數字N(1<=N<=999999) ,保證N爲奇數。 第二行爲N個用空格隔開的整數。.net
Outputcode
對於每組數據,輸出一行,表示要求找到的那個數blog
Sample Inputip
5 1 3 2 3 3 11 1 1 1 1 1 5 5 5 5 5 5 7 1 1 1 1 1 1 1
Sample Outputci
3 5 1
題目連接:get
https://vjudge.net/problem/HDU-1029
it
找出數列裏面出現次數多於n/2的的元素io
既然次數大於n/2,那麼例如三、二、三、一、三、二、3
由此可得咱們按照序列一次掃描,把第一個數字x賦值給ans,計數器cnt=0
如果後來數字x與ans相同,則cnt++,不然cnt-- 若cnt爲0,則從新找(不用倒回開頭)以此循便可
AC代碼
#include <bits/stdc++.h> #define Mod 1000000007 #define eps 1e-6 #define ll long long #define INF 0x3f3f3f3f #define MEM(x, y) memset(x, y, sizeof(x)) #define Maxn 1000 using namespace std; int main() { int n,x,ans,cnt; while(cin>>n) { cnt=0; for(int i=0; i<n; i++)//存數 { cin>>x; if(cnt==0)//計數器爲0,從新計數 { ans=x; cnt=1; } else { if(ans==x)//相同,計數器+1 cnt++; else//不一樣-1 cnt--; } } cout<<ans<<endl; } return 0; }