链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
给你n个数,有一个数的出现次数超过一半,请找出这个数。
输入描述:
输入两行。 第一行包含一个整数n 第二行包含n个整数ai 1≤n≤1000,1≤ai≤1e91 \leq n \leq 1000, 1 \leq a_i \leq 1e91≤n≤1000,1≤ai≤1e9
输出描述:
输出一行,包含一个整数。
示例1
输入
5
1 2 2 3 2
输出
2
示例2
输入
5
1 1 2 2 2
输出
2
示例3
输入
5
1 1 1 2 2
输出
1
题解:
#include<stdio.h>
int numm(int *a,int len){
long long int result = a[0];
int count = 1;
for(int i = 0;i<len -1;i++){
if(result == a[i+1]){
count++;
}
else if((result!=a[i+1])&&(count>1)){
count--;
}
else{
result = a[i+1];
count = 1;
}
}
return result;
}
int main(){
int n;
scanf("%lld",&n);
int arr[n];
for(int i = 0;i<n;i++){
scanf("%lld",&arr[i]);
}
printf("%lld",numm(arr,sizeof(arr)/sizeof(arr[0])));
return 0;
}