1. 题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
2. 解题思路
(1)遍历数组的时候,要注意将他们记录下来,特别是重复的数字,如果超过一半的话,很多事情都比较好办了。
(2).。。
3. 代码实现
(1)
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int maxCount = array[0];
int number = array[0];
int count = 1;
for(int i = 1; i < array.length; i++){
if (number != array[i]){
if(count == 0){
number = array[i];
count = 1;
}else {
count--;
}
}else {
count++;
}
if (count == 1){
maxCount = number;
}
}
int num = 0;
for (int j = 0; j < array.length; j++){
if (array[j] == maxCount)
num++;
}
if(num * 2 > array.length){
return maxCount;
}
return 0;
}
}
(2)
.。。