BZOJ2456 mode 【眾數】
阿新 • • 發佈:2018-06-25
整數 php sed 兩個 http span ont 一個 pen
3 2 3 1 3
BZOJ2456: mode
Description
給你一個n個數的數列,其中某個數出現了超過n div 2次即眾數,請你找出那個數。
Input
第1行一個正整數n。
第2行n個正整數用空格隔開。
Output
一行一個正整數表示那個眾數。
Sample Input
53 2 3 1 3
Sample Output
3HINT
100%的數據,n<=500000,數列中每個數<=maxlongint。
題解:
由於內存不足,被迫解鎖了一種新的求眾數的方法:抵消法,復雜度 n 。
由於眾數的個數 >= n div 2,所以我們把兩個不同的數抵消,不同的數疊加,最後剩下的一定是眾數(學到了 )
二話不說上代碼:
1 #include<cstdio> 2 int n,x,y,num; 3 int main() 4 { 5 scanf("%d",&n); 6 while (n--) 7 { 8 scanf("%d",&y); 9 if (!num) num++,x=y; 10 else { 11 if (y!=x) num--; 12 else num++; 13 } 14 } 15 printf("View Code%d",x); 16 }
加油加油加油!!! fighting fighting fighting !!!
BZOJ2456 mode 【眾數】