题解 | #数组中出现次数超过一半的数字#
数组中出现次数超过一半的数字
https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163
import java.util.*; import java.util.stream.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int MoreThanHalfNum_Solution (int[] numbers) { // write code here Map<Integer, Integer> hm = new HashMap<>(); for (int i : numbers){ if (hm.keySet().contains(Integer.valueOf(i))){ hm.put(i, hm.get(i)+1); }else{ hm.put(i, 1); } } int maxAppearance = Collections.max(hm.values()); boolean isEven = numbers.length % 2 == 0 ? true : false; boolean hasSolve = false; if (isEven){ if (maxAppearance > numbers.length/2){ hasSolve = true; } }else{ if (maxAppearance >= numbers.length/2){ hasSolve = true; } } if (hasSolve){ List<Integer> key = hm.entrySet().stream().filter(entry -> Integer.valueOf(maxAppearance).equals(entry.getValue())).map(Map.Entry::getKey).collect(Collectors.toList()); return key.get(0); } return -1; } }