1.13.28

28:出现次数超过一半的数

描述

给出一个含有n(0 < n <= 1000)个整数的数组,请找出其中出现次数超过一半的数。

数组中的数大于-50且小于50。

输入第一行包含一个整数n,表示数组大小;
第二行包含n个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。输出如果存在这样的数,输出这个数;否则输出no。样例输入

3
1 2 2

样例输出

2

来源习题(13-6)

 1 #include <cstdio>
 2 using namespace std;
 3 int a[1100],n,i=0,b[120];
 4 int main()
 5 {
 6     scanf("%d",&n);
 7     while(i<n)
 8     {
 9         scanf("%d",&a[i]);
10         b[a[i]+50]++;
11         i++;
12     }
13     for(i=0;i<110;i++)
14     if(b[i]>n/2)
15     {
16         printf("%d",i-50);
17         return 0;
18     }
19     printf("no");
20     return 0;
21     
22     
23 } 

 

posted @ 2017-01-11 20:46  lxzyzby  阅读(172)  评论(0)    收藏  举报