package Interview;
/**
* 算法复杂度为O(n)
*/
public class NumCountGTHalfLen {
public static void main(String[] args) {
int[] arr={1,2,3,2,5,6,2,2,3,2,2,4,2}; //2
//int[] arr={2,2,3,3,3,6};
//int[] arr={1,2,3};
//int[] arr={1,1,2,2};
int n = numCountGTHalfLen(arr);
System.out.println(n);
}
private static int numCountGTHalfLen(int[] arr) {
int count = 1;
int num = arr[0];
for (int i = 1; i < arr.length; i++) {
if (count == 0){
count = 1;
num = arr[i];
}else {
if (arr[i]==num){
count++;
}else{
count--;
}
}
}
//到此为止求出的num有可能是所求数字,但不一定是
count = 0;
for (int i : arr) {
if (i == num) count ++;
}
return count > arr.length/2 ? num : 0;
}
}