题解 | #数组中出现次数超过一半的数字#
数组中出现次数超过一半的数字
http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163
- 虽然不算最优解,但是满足题意,时间复杂度O(n),空间复杂度O(1)
- 先找到最大值-》确定数组的长度
- 统计值的个数
- 遍历取出最大值的索引
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int max = array[0];
for(int a : array){
if(a>max){
max = a;
}
}
int[] arr = new int[max+1];
for(int s : array){
arr[s] = arr[s] +1;
}
max = 0;
int index = 0;
for(int i=0;i<arr.length;i++){
if( arr[i]> max){
max = arr[i] ;
index = i;
}
}
return index;
}
}