题意及思路
- 题意:找出数组中,超半数的数。
- 思路:🙄foolish操作(见代码1),就是纯暴力法。😅推荐阅读代码2,很巧妙,若数组中有超半数的数时相同,排序后,则在中间位上的数一定是超半数的那个数。
代码1
#include <iostream>
#include <algorithm>
using namespace std;
int q[1005];
int main(){
int n;
cin >> n;
for(int i=0;i<n;i++) cin >> q[i];
sort(q,q+n);
int it = n/2;
bool f = true;
for(int i=0;i<=it;i++){
int j = i;
f = true;
while(j<=i+it){
if(q[j]!=q[i]){
f = false;
break;
}
j++;
}
if(f){
cout << q[i] << endl;
break;
}
}
return 0;
}
代码2
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int a[1000],n;
cin >> n;
for(int i = 1;i <= n;i++)
cin >> a[i];
sort(a+1,a+n+1);
cout << a[n/2];
}