题解 | #数组中出现次数超过一半的数字#
数组中出现次数超过一半的数字
https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163
import java.util.*;
public class Solution {
//利用value找到对应的key
public int getKey(HashMap<Integer, Integer> map, Integer value) {
int key = 0;
for (Map.Entry<Integer, Integer> e1 : map.entrySet()) {
if (value == e1.getValue()) {
key = e1.getKey();
}
}
return key;
}
public int MoreThanHalfNum_Solution (int[] numbers) {
// write code here
HashMap<Integer, Integer> h1 = new HashMap<>();
for (int i = 0; i < numbers.length; i++) {
//这里 如果numbers[i]在h1里面则对应的value++;反之,则初始化为1
h1.merge(numbers[i], 1, (oldvalue, newvalue) -> ++oldvalue);
}
Integer maxValue = 0;
Integer maxKey = 0;
//遍历HashMap 找到最大的value
for (Map.Entry<Integer, Integer> e1 : h1.entrySet()) {
if (maxValue < e1.getValue()) {
maxValue = e1.getValue();
}
}
//判断出现次数最大的数字 是否超过数组长度的一半
if (maxValue >= numbers.length / 2) {
maxKey = getKey(h1, maxValue);
}
return maxKey;
}
}
三奇智元机器人科技有限公司公司福利 63人发布