
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public class { public int MoreThanHalfNum_Solution(int [] array) { if(array == null || array.length == 0){ return 0; } int count = 1; int temp = array[0]; for(int i=1; i < array.length; i++){ if(array[i] == temp){ count++; }else{ count--; if(count < 1){ temp = array[i]; count = 1; } } } int num=0; for(int i = 0 ;i < array.length; i++){ if(array[i] == temp){ num++; } } int len = array.length / 2; return num > len ? temp : 0; } }
|
近期评论