题目
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
程序核心思想
- 我的方法:创建一个辅助数组,使其的长度跟array一致,用来记录array中的元素出现的个数。
当前数会依次跟之前的数(从0开始扫描array)比较,如果有相同的,那么就使辅助数组中的索引为之前数的值加一,并且跳出循环,如果发现辅助数组中的值大于array长度的一半,那么返回array数组的当前值。
Tips
无
代码
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int length = array.length / 2 + 1;
int[] arr = new int[array.length];
for(int i = 0; i < arr.length; i++){
arr[i] = 0;
}
for(int i = 0; i < array.length; i++){
for(int j = 0; j <= i; j++){
if(array[i] == array[j]){
arr[j]++;
if(arr[j] == length) return array[i];
break;
}
}
}
return 0;
}
}