题目
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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;
}
}