求数组中出现频率第二的数
描述: 如题,给定一个数组,让你求出数组中数量第二的数值?
作者自述: 本题目是作者字节跳动面试时被问到的面试题,由于面试时间只剩下不到十分钟,当时没有写出来,面试后再思考解决出来了。这是leetcode上没有的题目,百度也没有太多正确的信息,故作者在这里分想自己的思路。
直接上代码:
public class Solution{
public static int getmaxtimes(int []a){
HashMap<Integer, Integer> map = new HashMap<>();
int max1=0;
int max2=0;
int num1=0;
int num2=0;
for (int i : a) {
map.merge(i, 1, Integer::sum);
}
for (int i : a) {
if (map.get(i)>max1){
num2=num1;
num1=i;
max2=max1;
max1=map.get(i);
}
else if (map.get(i)>max2&&map.get(i)<max1){
num2=i;
max2=map.get(i);
}
}
return num2;
}
}
大致注释在代码里,大家看一下就应该知道作者的思路了,就不再另行赘续
|