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

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

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

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

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

输入
第一行包含一个整数n,表示数组大小;
第二行包含n个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。
输出
如果存在这样的数,输出这个数;否则输出no。
样例输入
3
1 2 2
样例输出
2
来源
习题(13-6)
别忘了负数
 1 #include<iostream>
 2 using namespace std;
 3 int a[10001];
 4 int main()
 5 {
 6     int n;
 7     cin>>n;
 8     for(int i=1;i<=n;i++)
 9     {
10         int c;
11         cin>>c;
12         a[c+50]++;
13         if(n%2==1)
14         {
15             if(a[c+50]>=(n/2+1))
16             {
17                 cout<<c;
18                 return 0;
19             }
20         }
21         else
22         {
23             if(a[c+50]>(n/2))
24             {
25                 cout<<c;
26                 return 0;
27             }
28         }
29     }
30     cout<<"no";
31     return 0;
32 }

 

posted @ 2017-03-10 15:58  自为风月马前卒  阅读(1048)  评论(0编辑  收藏  举报

Contact with me