数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
思路分析:
可以先将数字进行排序,如果符合条件的数存在那么,那么这个数一定是排序后在中间的那个数。如:1,2,2,2,3或2,2,2,3,4或2,3,4,4,4等。因此,问题转化为统计中间那个数出现的次数,若其大于数组长度的一半,则输出中间的那个数字;否则,输出0。
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int len=array.length;
if(len==0)
return 0;
Arrays.sort(array);
int num=array[len/2];
int count=0;
for(int i=0;i<len;i++){
if(num==array[i])
count++;
}
if(count<=(len/2))
num=0;
return num;
}
}