首页 > 试题广场 >

出现次数大于等于数组长度一半的数

[编程题]出现次数大于等于数组长度一半的数
  • 热度指数:325 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一个长度为 n 的数组,请你找到出现次数大于等于数组长度一半的数。

输入描述:
第一行一个正整数 n,表示数组的长度,长度不超过100。
第二行 n 个正整数,表示数组的元素。保证仅有一个数满足要求。


输出描述:
输出出现次数大于等于数组长度一半的数。
示例1

输入

12
3 9 3 2 5 6 7 3 2 3 3 3

输出

3
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int count = 0;
        Map<Integer, Integer> map = new HashMap<>();
        while (in.hasNextInt()) {
            count = in.nextInt();
            while (in.hasNextInt()) {
                int value = in.nextInt();
                if (map.containsKey(value)) {
                    map.put(value, map.get(value) + 1);
                } else {
                    map.put(value, 1);
                }
            }
        }
        for (Integer key : map.keySet()) {
            if (map.get(key) >= count / 2.0f) {
                System.out.println(key);
                break;
            }

        }
    }
}
编辑于 2024-01-04 22:34:38 回复(0)