java编程题,求众数

该博客介绍了一个Java程序,用于解决复旦大学上机题目,即找出一个整数序列中的众数。程序通过HashMap存储每个数字及其出现次数,最后找到出现次数最多的数字并输出。若众数不唯一,程序会输出较小的那个值。示例输入为8个数字,输出为出现次数最多的数字2。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复旦大学上机题(一)

  • 求众数。众数就是一个序列中出现次数最多的数字。如果不唯一,则输出小的那个值。给定第一个代表有几个数字。1<=n<=10^5,每个数字在
    int 范围内。
  • 输入样例:
   8 
   10 3 8 8 3 2 2 2 
  • 输出样例:
2
package cn.liuliu;

import java.util.HashMap;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        System.out.println("请输入数字个数");
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        System.out.println("请输入数字");
        Scanner scan2 = new Scanner(System.in);
        String a = scan2.nextLine();
        String[] arr = new String[n];
        arr = a.split(" ");//将输入的字符串切割

        HashMap map = new HashMap();

        for (int i = 0; i < n; i++) {
            String arr11 = arr[i];
            Object temp = map.get(arr11);//得到当前索引值的值

            if (temp == null || temp.equals("")) {
                map.put(arr11, 1);//第一次存入
            } else {
                int te = Integer.parseInt(String.valueOf(temp));//已经存在的,将值加一
                te = te + 1;
                map.put(arr[i], te);
            }
        }

        int re = 0;//存储次数
        String key1="";//当前出现最多的值
        for (Object key : map.keySet()) {//遍历hasmap
            int aa = Integer.parseInt(String.valueOf(map.get(key)));
            if(aa>re){//次数比当前存储的次数多,换成这个次数
                re = aa;
                key1 = key.toString();
            }else if(aa == re){//如果次数相同
                if(Integer.parseInt(key.toString())<Integer.parseInt(key1)){//输出小的值
                    key1 = key.toString();
                }
            }
           //System.out.println("key: " + key + "; value: " + map.get(key));
        }
        System.out.println(key1);//输出结果
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值