题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
题解:
def MoreThanHalfNum_Solution(numbers: Array[Int]): Int = {
//这题有点类似于wordCount,原理就是将数组进行k,v分组,然后统计每个key的uv,然后过滤出uv大于数组长度一半的key
val temp = numbers.map((_,1)).groupBy(_._1).map(x=>(x._1,x
._2.size)).filter(x=>x._2>numbers.length/2)
//如果符合条件的这个key存在
if(temp.size>0){
//则返回
temp.head._1
}else{
//否则返回0
0
}
}