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

时间:2022-05-08
本文章向大家介绍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 }