//求出现次数超过数组长度一半的数
#include<stdio.h>
int Find(int *arr, int len){
int num = 0;
int times = 0;
int i = 0;
for (i = 0; i < len; i++){
if (times == 0){
num = arr[i]; //先给num一个值,记录次数为1
times = 1;
}
else if (arr[i] == num){ //在遍历的时候,有相同的则次数加1
times++;
}
else{
times--; //不同的则次数减1,超过数组长度一半的数,times肯定大于0
}
}
return num;
}
int main(){
int arr[] = { 1, 2, 3, 2, 2, 2, 5, 4, 2 };
printf("超过一半的数是: %d\n", Find(arr, sizeof(arr) / sizeof(arr[0])));
return 0;
}
[C语言]求出现次数超过数组长度一半的数。
最新推荐文章于 2023-10-23 00:08:52 发布