用一个简单的方法获取一个数组中出现次数超过一半的元素
程序员文章站
2022-06-09 11:10:52
...
用一个简单的方法获取一个数组中出现次数超过一半的元素
突然想到写这个的原因是笔试中遇到一个比较相似的题,随便写了些,有什么问题可以底下评论反馈我,谢谢。
方法一主要思路是利用sort方法去排序获取位于中间的元素,然后在遍历统计该元素出现的次数,若超过数组长度的一半,则输出该元素,否则输出-1.
。
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/**
*
- @author Fang
- 输入一个数组,并找出出现次数超过总数一半的数字,否则返回-1
*/
//
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数组长度:");
while(true) {
int n = scanner.nextInt();
if(n == 0) {
System.out.println("数组长度不能为空");
}else {
Integer[] num = new Integer[n];
System.out.println("请输入数组元素:");
for(int i = 0; i < num.length; i++) {
num[i] = scanner.nextInt();
}
List<Integer> list = Arrays.asList(num);
Collections.sort(list);
if(list.size() == 1 ) {
System.out.println(list);
break;
}else {
int a = list.get(list.size()>>1);
int count = 0;
for(int i = 0; i< list.size(); i++) {
if(list.get(i) == a) {
count ++;
}
}
System.out.println("出现次数超过一半的元素是:"+
(count > n>>1 ? a : -1));
break;
}
}
}
}
上一篇: PHP实现事件机制实例分析,php事件实例分析_PHP教程
下一篇: 字符串截取的有关问题