JZ28---数组中出现次数超过一半的数字

tech2022-12-30  105

题目

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

思路

我们用map集合。自带的特性可以AC这道题。 用键(Key)存储出现的数字,用值(value)存储出现的次数。 最后遍历键得出值是否超过数组长度的一半即可。

如果超过返回对应键如果不超过返回0

AC代码

import java.util.HashMap; import java.util.Map; public class Solution { public int MoreThanHalfNum_Solution(int[] array) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i = 0 ; i < array.length ; i++) { if(map.get(array[i]) == null) { map.put(array[i], 1); }else { map.put(array[i], map.get(array[i]) + 1); } if(map.get(array[i]) >= (array.length / 2 + 1)) return array[i]; } return 0; } }
最新回复(0)