首页 > 试题广场 >

小欧的数组修改

[编程题]小欧的数组修改
  • 热度指数:1329 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小欧拿到了一个数组,她可以修改其中任意一个元素的值(也可以不修改),使得出现次数最多的那个元素次数尽可能多。你能求出这个最多的出现次数吗?

输入描述:
第一行输入一个正整数n,代表数组的大小。
第二行输入n个正整数a_i,代表数组的各个元素。


输出描述:
一个正整数,代表小欧操作后出现最多的元素次数。
示例1

输入

3
1 2 3

输出

2

说明

将1修改为3,数组变成[3,2,3],3出现了2次。修改方式并不是唯一的。
示例2

输入

1
4

输出

1

说明

由于只有一个数,所以无论是否进行修改,它都只出现了1次。
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int len = in.nextInt();
        int[] arr = new int[len];
        int i = 0;
        while (in.hasNextInt()) {
            arr[i] = in.nextInt();
            i++;
        }
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : arr) {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        int max = 0;
        for (int fre : map.values()){
            if (fre > max) {
                max = fre;
            }}

        // // 找出最大频率
        // int max = Collections.max(frequencyMap.values());
        System.out.println(max==len?max:max+1);
       
    }
}
发表于 2025-05-16 11:34:20 回复(0)