华为OD机试之查找众数及中位数(Java源码)

news2024/11/18 17:49:24

查找众数及中位数

题目描述

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

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

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

输入描述

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

输出描述

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

用例

输入10 11 21 19 21 17 21 16 21 18 15
输出21
输入2 1 5 4 3 3 9 2 7 4 6 2 15 4 2 4
输出3
输入5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39
输出7

题目解析

这个题属于逻辑题,先将输入的字符串解析成数组,然后转换到map中去,顺便把出现最多的次数记录下来。

遍历map将次数等于最多次数的数装入一个List

对List进行排序,排序后根据列表长度来确认中位数

示例代码Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/**
 * 求众数排列后的中位数 1.求众数 2.求中位数 10 11 21 19 21 17 21 16 21 18 15 2 1 5 4 3 3 9 2 7 4
 * 6 2 15 4 2 4 5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39
 */
public class T50 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		int max[] = new int[1];
		Arrays.stream(sc.nextLine().split(" ")).forEach(s -> {
			int key = Integer.parseInt(s);
			map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1);
			if (max[0] < map.get(key)) {
				max[0] = map.get(key).intValue();// 求出出现的最大次数
			}
		});
		System.out.println(map);
		
		// 过滤
		Set<Integer> keySet = map.keySet();
		List<Integer> numList = new ArrayList<Integer>();
		Iterator<Integer> it = keySet.iterator();
		while (it.hasNext()) {
			Integer key = it.next();
			if (map.get(key) == max[0]) {
				for (int i = 0; i < map.get(key); i++) {
					numList.add(key);
				}
			}
		}
		System.out.println(numList);

		// 求中位数
		numList.sort(new Comparator<Integer>() {
			@Override
			public int compare(Integer arg0, Integer arg1) {
				if (arg0 < arg1)
					return -1;
				if (arg0 > arg1)
					return 1;
				return 0;
			}
		});
		int middle = numList.size() % 2 == 1 ? numList.get(numList.size() / 2)
				: (numList.get(numList.size() / 2) + numList.get(numList.size() / 2 - 1)) / 2;
		System.out.println(middle);
	}
}

代码运行示意图
在这里插入图片描述

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

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

相关文章

从0开始搭建react项目(函数组件)

目录 项目搭建步骤 本地开发环境 脚手架构建项目 关联Git仓库 strictMode 严格模式 路由配置 路由传参 路由守卫 数据绑定 生命周期 父子组件通信 redux持久化 安装Sass 安装postcss-pxtorem&#xff08;移动端项目&#xff09; 安装axios 环境变量 本地代理 …

直播预告:CoremailHVV经验分享与重保整体解决方案发布

面对更具有目的性、针对性的网络攻击压力&#xff0c;重保既是抵抗攻击的重要举措&#xff0c;也是数字经济时代下企业发展的刚需。 正值重保期&#xff0c;企业在面对多样化的攻击手段、持续化的攻击行为、剧增化的攻击危害&#xff0c;应该如何应对重保大考&#xff1f; 6月1…

供应链安全

供应链安全 目录 文章目录 供应链安全目录本节实战可信任软件供应链概述构建镜像Dockerfile文件优化镜像漏洞扫描工具&#xff1a;Trivy检查YAML文件安全配置&#xff1a;kubesec准入控制器&#xff1a; Admission Webhook准入控制器&#xff1a; ImagePolicyWebhook关于我最后…

openpnp - 底部相机支架的制作

文章目录 openpnp - 底部相机支架的制作概述END openpnp - 底部相机支架的制作 概述 前几天总结了底部相机校验通不过的原因(openpnp - 底部相机矫正(subject not found)的原因总结), 并且可以校验通过了. 好景不长, 在校验通过的第三天(中间再穿插做其他事情), 从头做了一次…

【ArcGIS Pro二次开发】(38):清理字段值(空格、空值)

由于一些不规范的输入&#xff0c;或是其它数据转换而来&#xff0c;要素类或者独立表的字段值经常含有空值、空格等影响数据质量的内容。 这个工具的目的就是清理、转换这些字段内容&#xff0c;提高数据质量。 一、要实现的功能 如上图所示&#xff0c;点击【清洗字段值】按…

springboot+vue+java仓库管理系统_0r36w

部门管理员&#xff1a; 申购入库&#xff1a;发起申购&#xff0c;进行入库申请。 调拨申请&#xff1a;发起资产调拨的申请以及查看申请的详情信息。 出库管理&#xff1a;查看调拨的详情信息&#xff0c;可以进行资产的申请报废以及申请维修。 资产报废查询&#xff1a;查看…

薛定谔maestro 安装

【1】先删除之前不能用的文件包 【2】tar -xvf 解压包 进行解压 【3】cd 解压出来的文件下 【4】sudo ./INSTALL 【也可以不用sudo&#xff0c;我的电脑不知道上面问题&#xff0c;需要用sudo&#xff0c;否则在之后创建生成文件夹的时候没有权限】 【5】根据操作一步一步…

电子行业 K 公司对接 Nexperia EDI 项目案例

项目背景 Nexperia 是一家全球领先的半导体制造商&#xff0c;专注于提供高性能、高可靠性和创新性的半导体解决方案。公司成立于2017年&#xff0c;是前飞思卡尔半导体业务的一部分&#xff0c;并在全球范围内拥有多个设计、研发和生产基地。 Nexperia 使用 EDI&#xff08;…

【VMware】虚拟机安装centos7

目录 一、创建虚拟机 1、自定义 2、选择需要安装的操作系统 3、选择虚拟机安装位置 4、选择处理器配置&#xff08;可先默认&#xff09; 5、设置虚拟内存&#xff08;一般4096&#xff09; 6、选择网络连接方式 7、选择I/O控制器 8、选择磁盘类型 9、选择磁盘 10、指定磁盘容…

真刑!几行代码端了整个教务系统。。

今天给大家伙分享一个网络安全的案例&#xff0c;程序员和网安同学都可以看看&#xff0c; 前言&#xff1a;本文中涉及到的相关漏洞已报送厂商并得到修复&#xff0c;本文仅限技术研究与讨论&#xff0c;严禁用于非法用途&#xff0c;否则产生的一切后果自行承担 漏洞成因 事…

佩戴舒适的蓝牙耳机哪款比较好用?佩戴舒适度最好的蓝牙耳机推荐

​关于蓝牙耳机佩戴舒适度及音质表现的问题&#xff0c;经常有很多小伙伴在问&#xff0c;或许大家更习惯用价格去界定一个蓝牙耳机的定位。本篇文章主要给大家介绍哪款蓝牙耳机比较好用&#xff0c;很值得入手的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡OE蓝牙耳机&#…

知识小结——HTTP协议相关

目录 TCP/IP URI / URL HTTPS 总结时间&#xff1a; TCP/IP协议簇 对TCP的理解 对UDP的理解 HTTP&#xff08;超文本传输协议&#xff09;是什么&#xff1f; HTTPS&#xff08;安全超文本传输协议&#xff09;是什么&#xff1f; HTTPS的特点&#xff1a; HTTPS协议…

【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序

linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序 一、背景描述二、vi命令编辑三、启动程序四、拓展--启动脚本 一、背景描述 需求&#xff1a;发现线上的 iotp-irsb-server-v1.0.0.2.jar 包中配置文件的日志级别配置错误&#xff0c;需要在线修改jar包中文件的…

99.实战网页构建定价部分-第二节

上节课我们完成的定价页面是这样的 上节课我们完成的定价页面是这样的 ● 首先我们先给卡片加上背景颜色 .princing-plan {background-color: #fdf2e9;border-radius: 11px;padding: 4.8rem; }● 之后我们调整下框子的大小和位置 ● 接着我们给基础价格再调价一项&#x…

低代码开发平台介绍

低代码开发平台近两年发展迅猛&#xff0c;并迅速渗透到各个细分领域。本文简要介绍低代码开发的概念以及特性&#xff0c;并结合低代码开发的应用场景介绍两个低代码开发平台。 1、低代码开发概念 1.1 低代码开发介绍 低代码开发&#xff08;Low-code Development&#xff0…

SQL调优:让Java内存分担计算

作者: 剽悍一小兔 CSDN前端优质创作者&#xff0c;打破编程小说次元壁第一人《JavaScript百炼成仙》作者&#xff0c;专注Java硬核干货分享&#xff0c;分享创造快乐&#xff0c;技术成就梦想&#xff01; 我们在工作中&#xff0c;经常会因为一条慢sql调半天。这一节&#xff…

无线蓝牙耳机什么牌子好?八大真无线蓝牙耳机排名

蓝牙耳机作为当前热门的数码产品&#xff0c;无论何时都能用上&#xff0c;蓝牙耳机的快速发展逐渐的取代有线耳机&#xff0c;摆脱线条的束缚&#xff0c;更方便携带。当然&#xff0c;随着蓝牙耳机的设计各种各样&#xff0c;导致很多的小伙伴在选购耳机的时候&#xff0c;不…

简易协程工具【Wait! - Easy Coroutines】

Wait! - Easy Coroutines | Utilities Tools | Unity Asset StoreUse the Wait! - Easy Coroutines from Iterant Games on your next project. Find this utility tool & more on the Unity Asset Store.https://prf.hn/l/b3AQw5a 1、概述 Wait - Easy Coroutines&#…

chatgpt赋能python:建立Python文件的完整指南

建立Python文件的完整指南 如果您正在寻找一个易于学习和使用的编程语言&#xff0c;Python就是一个不错的选择。Python的第一印象常常让人感到吃惊&#xff0c;因为它的代码与许多编程语言相比要短得多&#xff0c;然而它的功能非常强大且使用范围广泛。在本文中&#xff0c;…

【位图布隆过滤器海量数据面试题】

文章目录 1 位图2 布隆过滤器 1 位图 首先我们来看看一个腾讯的面试题&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。 分析&#xff1a; 40亿个不重复整形数据&#xff0c;大概有160亿字节…