题目描述
给定一个整型数组arr,请打印其中出现次数大于一半的数,如果没有这样的数,请输出-1。
示例
输入:
5
11 7 5 7 7
输出:
7
算法思想
1.给数组进行排序
2.定义count计数字出现的次数,遍历数组,从数组第一个数开始与最中间的数进行比较,若相等,则count每次加1
3.若count的值大于数组最中间的数字下标,则输出最中间的数字,否则输出-1。
代码
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static int countArr(int[] arr){
int count =0;
int len = arr.length/2;
Arrays.sort(arr);
for(int i = 0;i < arr.length;i++){
if(arr[i] == arr[len]){
count++;
}
}
if(count > len){
return arr[len];
}else{
return -1;
}
}
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int length = scan.nextInt();
int[] arr = new int[length];
for(int i = 0;i < length;i++){
arr[i] = scan.nextInt();
}
System.out.println(countArr(arr));
}
}