欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用一个简单的方法获取一个数组中出现次数超过一半的元素

程序员文章站 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;
			}
		}
		
	}
	
}
相关标签: 笔试