华为od手撕-数组元素top1
题目描述
查找一个数组中出现最多次数的值,如果存在相同的数量则输出较大的值。
解题思路
数据结构:哈希表
过程描述:在遍历数组过程中
1)使用count记录每个值出现的次数
2)使用maxlen,maxnum分别记录当前的最大次数和最大数值,有以下两种情况:
①当前元素出现次数 > maxlen : 更新maxlen为当前次数 & maxnum为当前元素
②当前元素出现次数 == maxlen&& 当前元素 > maxnum: 更新maxnum为当前元素
遍历完成后,输出maxnum。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int nums[10];
for(int i=0;i<10;i++){
scanf("%d",&nums[i]);
}
int count[100]={0};
int maxlen=0;
int maxnum=nums[0];
for(int i=0;i<10;i++){
count[nums[i]]++;
if(count[nums[i]]>maxlen){
maxlen=count[nums[i]];
maxnum=nums[i];
}else if(count[nums[i]]==maxlen&&nums[i]>maxnum){
maxnum=nums[i];
}
}
printf("%d",maxnum);
return 0;
}