华为OD机试 - 查找众数及中位数(Java 2023 B卷 100分)

news2024/11/23 9:01:42

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

众数是指一组数据中出现次数量多的那个数,众数可以是多个。

中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数。

查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数。

二、输入描述

输入一个一维整型数组,数组大小取值范围 0<N<1000,数组中每个元素取值范围 0<E<1000。

三、输出描述

输出众数组成的新数组的中位数。

四、解题思路

本体属于送分题,根据题意来解题即可。

众数是指一组数据中出现次数量多的那个数,众数可以是多个。
中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数。

  1. 输入一行数字,空格分割;
  2. 定义一个map,记录每个数字出现的次数;
  3. 找出某数字出现的最大次数;
  4. 允许出现最大次数的数字为多个,故将其加载到出现最大次数的数字集合maxList;
  5. 对maxList进行升序排序;
  6. 如果这组数据的个数是奇数,那最中间那个就是中位数;
  7. 如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数;
  8. 输出中位数。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        /**
         * key:数字
         * value:该数字出现的次数
         */
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        // 数字出现的最大次数
        int timeMax = 0;
        for (String s : sc.nextLine().split(" ")) {
            Integer sInt = Integer.valueOf(s);
            // 如果map中存在此数字,则数量+1
            if (map.containsKey(sInt)) {
                Integer temp = map.get(sInt) + 1;
                // 获取数字出现的最大次数
                if (temp > timeMax) {
                    timeMax = temp;
                }
                map.put(sInt, temp);
            } else {
                map.put(sInt, 1);
            }
        }

        // 出现最大次数的数字集合
        List<Integer> maxList = new ArrayList<Integer>();
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (timeMax == entry.getValue()) {
                for (int i = 0; i < timeMax; i++) {
                    maxList.add(entry.getKey());
                }
            }
        }

        /**
         * 中位数是指把一组数据从小到大排列,最中间的那个数
         * 对其进行升序排序
         */
        maxList.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer arg0, Integer arg1) {
                if (arg0 < arg1) {
                    return -1;
                } else if (arg0 > arg1) {
                    return 1;
                } else {
                    return 0;
                }
            }
        });

        System.out.println("出现最大次数的数字集合:"+maxList);

        int middle = 0;
        // 如果这组数据的个数是奇数,那最中间那个就是中位数
        if (maxList.size() % 2 == 1) {
            middle = maxList.get(maxList.size() / 2);
        } else {
            // 如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数
            middle = (maxList.get(maxList.size() / 2) + maxList.get(maxList.size() / 2 - 1)) / 2;
        }
        System.out.println(middle);
    }
}

六、效果展示

1、输入

10 22 26 58 35 22 10 26 10 22 35 35 55 100 99 15 17 21

2、输出

22

3、说明

出现最大次数的数字集合:[10, 10, 10, 22, 22, 22, 35, 35, 35]

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Windows Server 2008上启用自动文件夹备份

要在Windows Server 2008上启用自动文件夹备份&#xff0c;您可以使用内置的Windows备份功能。下面是如何设置它的方法&#xff1a; 1. 点击“开始”按钮并选择“服务器管理器”&#xff0c;打开“服务器管理器”。 2. 在“服务器管理器”窗口中&#xff0c;单击左侧窗格中的“…

Failed to connect to bitbucket.org port 443

浏览器可以访问bitbucket&#xff0c;但是在终端或者sourcetree上死活无法进行pull, push等操作。 Root Cause&#xff1a;“【翻】【墙】软件”使用了http proxy&#xff0c;所以也得为git设置相同的http proxy。 所以&#xff0c;解决方法是&#xff1a; 1&#xff0c;查看“…

【环境配置】Windows 10 安装 PyTorch 开发环境,以及验证 YOLOv8

Windows 10 安装 PyTorch 开发环境&#xff0c;以及验证 YOLOv8 最近搞了一台Windows机器&#xff0c;准备在上面安装深度学习的开发环境&#xff0c;并搭建部署YOLOv8做训练和测试使用&#xff1b; 环境&#xff1a; OS&#xff1a; Windows 10 显卡&#xff1a; RTX 3090 安…

YOLOv8 : 网络结构

一. YOLOv8网络结构 1. Backbone YOLOv8的Backbone同样参考了CSPDarkNet-53网络&#xff0c;我们可以称之为CSPDarkNet结构吧&#xff0c;与YOLOv5不同的是&#xff0c;YOLOv8使用C2f(CSPLayer_2Conv)代替了C3模块(如果你比较熟悉YOLOv5的网络结构&#xff0c;那YOLOv8的网络…

非线性 简介

让我们分析一下现实世界物体的运动规律 摇摇头&#xff0c;感受一下你的头是怎样运动的 我们的头侧向一方&#xff0c;准备往另一边转动时&#xff0c;先加速&#xff0c;等快要到达目标时&#xff0c;马上减速。 这是摇头时头的运动曲线 加速的时间很短&#xff0c;所以看起来…

【eNSP】OSPF实验

【eNSP】OSPF实验 原理术语Router-idOSPF区域DR与DDR 过程 实验根据图片连接模块配置设备名称和IP地址修改R1&#xff1a;修改R2&#xff1a;修改R3修改R4修改R5测试连通性 OSPF设置设置进程号和RID划分OSPF区域DR设置&#xff0c;2way实验设置查看设置结果 口令验证 原理 OSP…

控制威格士伺服阀放大器SM4-15、SX4-10、SX4-12

威格士的SM4-10、SM4-12、SM4-15、SX4-10、SX4-12、SX4-15、SM4-20、SX4-20、SM4-30、SM4-40系列伺服阀搭配模块式伺服放大器提供系统闭环控制&#xff0c;具有位置精度高、速度曲线可重复以及可预测的力或力矩的调节等优点。 伺服阀的典型应用包括注塑&#xff0f;吹塑成形系…

低代码开发工具:JVS轻应用之间如何实现数据的调用?

在低代码开发平台中&#xff0c;如何实现应用之间的数据共享呢&#xff1f;最标准的方式是通过接口&#xff0c;本文介绍JVS轻应用如何实现将数据通过API输出、轻应用如何实现体内API数据的获取&#xff1f;实现方式如下图所示&#xff0c;不管是数据提供方&#xff0c;还是数据…

ebay灯串UL报告 UL588检测标准

季节性和装饰性照明用品即灯串以及配件都是便携式插头连接的临时性商品&#xff0c;最大额定输入电压为 120 伏。 由 ILAC ISO 17025 认证的实验室出具的检测报告&#xff0c;确认每件商品均已经过检测&#xff0c;符合下列要求&#xff1a; 季节性和装饰性照明用品(灯串&…

idea下载安装教程

idea下载安装教程 文章目录 idea下载安装教程1、下载2、安装 1、下载 进入官网&#xff1a; https://www.jetbrains.com/ 下滑&#xff1a; 点击Download 这个就是专业版了&#xff0c;需要付费&#xff0c;学生认证就是用的这个专业版的 但是2023的版本对于页面做了很大的改…

物联网工程应用实训室建设方案

一、物联网工程应用系统概述 1.1物联网工程定义 物联网工程&#xff08;Internet of Things Engineering&#xff09;是一种以信息技术&#xff08;IT&#xff09;来改善实体世界中人们生活方式的新兴学科&#xff0c;它利用互联网技术为我们的日常生活活动提供服务和增益&am…

东方晶源亮相第十一届半导体设备年会,共话发展“芯”机遇

8月11日&#xff0c;以“协力同芯抢机遇&#xff0c;集成创新造设备”为主题的第十一届&#xff08;2023年&#xff09;中国电子专用设备工业协会半导体设备年会暨产业链合作论坛&#xff08;CSEAC&#xff09;在无锡太湖国际博览中心圆满闭幕。为期3天的CSEAC&#xff0c;通过…

SpringBoot知识点总结

概述 SpringBoot的主要目的在于简化Spring应用程序的开发&#xff0c;提供了一个引导类SpringBootApplication.run(配置类名.calss)作为程序的启动入口。 注意&#xff1a; <dependencyManagement>中定义的jar包并不是直接加载到工程中 restful风格 RestController:配…

涉及近300个业务场景,重庆银行数字员工平台建设解析

随着数字化转型战略规划的逐步落地&#xff0c;重庆银行于2022年6月成功建设了数字员工平台&#xff0c;该平台已成为行内数字化转型的标杆应用。数字员工平台以RPA&#xff08;机器人流程自动化&#xff09;为基础&#xff0c;AI&#xff08;人工智能&#xff09;技术为抓手&a…

码银送书第五期《互联网广告系统:架构、算法与智能化》

广告平台的建设和完善是一项长期工程。例如&#xff0c;谷歌早于2003年通过收购Applied Semantics开展Google AdSense 项目&#xff0c;而直到20年后的今天&#xff0c;谷歌展示广告平台仍在持续创新和提升。广告平台是负有营收责任的复杂在线平台&#xff0c;对其进行任何改动…

【动态规划】回文串问题

文章目录 动态规划&#xff08;回文串问题&#xff09;1. 回文子串2. 最长回文子串3. 回文串分割 IV4. 分割回文串 ||5. 最长回文子序列6. 让字符串成为回文串的最小插入次数 动态规划&#xff08;回文串问题&#xff09; 1. 回文子串 题目链接 状态表示 f[i][j]表示 i 到 j …

W5500-EVB-PICO 做UDP Server进行数据回环测试(七)

前言 前面我们用W5500-EVB-PICO 开发板在TCP Client和TCP Server模式下&#xff0c;分别进行数据回环测试&#xff0c;本章我们将用开发板在UDP Server模式下进行数据回环测试。 UDP是什么&#xff1f;什么是UDP Server&#xff1f;能干什么&#xff1f; UDP (User Dataqram P…

小程序的排名规则是什么?

如何提高小程序微信搜一搜排名呢&#xff1f;AdSet带大家了解&#xff0c;影响小程序搜索排名的五个关键要素&#xff1a; 关键因素一&#xff1a;最近使用过 在小程序的排序规则里&#xff0c;有一条是最霸道的&#xff0c;也是第1优先级——使用过。只要用户使用过这个小程…

C++ STL priority_queue

目录 一.认识priority_queue 二. priority_queue的使用 三.仿函数 1.什么是仿函数 2.控制大小堆 3.TopK问题 四.模拟实现priority_queue 1.priority_queue的主要接口框架 2.堆的向上调整算法 3.堆的向下调整算法 4.仿函数控制大小堆 五.priority_queue模拟实现整体代码和测…

领航未来!探索开源无人机与5G组网的前沿技术

近年来无人机行业高速发展&#xff0c;无人机被广泛应用于航拍、农业、电力、消防、科研等领域。随着无人机市场不断增长&#xff0c;其对实时超高清图传、远程低时延控制、海量数据处理等需求也在不断扩张&#xff0c;这无疑给通信链路带来了巨大的挑战。 为应对未来的需求变…