题目描述
给你一个整数数组 nums
,返回出现最频繁的偶数元素。
如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1
题解
用两个数组,数组2是用来计数的。
class Solution {
public int mostFrequentEven(int[] nums) {
int max = nums[0], min = nums[0];
int i = 1;
int len = nums.length;
boolean hasEven = false;
for(i = 0; i < len; i++){
int node = nums[i];
if (node % 2 != 0){
continue;
}
if (node > max){
max = node;
}
if (node < min){
min = node;
}
hasEven = true;
}
if (!hasEven){
return -1;
}
int[] result = new int[max - min + 1];
int more = 0;
int moreNode = 0;
for(i = 0; i < len; i++){
int node = nums[i];
if (node % 2 != 0){
continue;
}
int v = node - min;
result[v] += 1;
if (result[v] > more){
more = result[v];
moreNode = node;
} else if (result[v] == more && node < moreNode){
moreNode = node;
}
}
return moreNode;
}
}
提交结果