news 2026/4/23 13:50:27

(新卷,100分)- 查找众数及中位数(Java JS Python C)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 查找众数及中位数(Java JS Python C)

(新卷,100分)- 查找众数及中位数(Java & JS & Python & C)

题目描述

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

中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以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
题目解析

逻辑题。具体逻辑请看代码注释。

Java算法源码
import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Integer[] nums = Arrays.stream(sc.nextLine().split(" ")).map(Integer::parseInt).toArray(Integer[]::new); System.out.println(getResult(nums)); } public static int getResult(Integer[] nums) { HashMap<Integer, Integer> count = new HashMap<>(); // 统计各数字出现次数 for (int num : nums) { count.put(num, count.getOrDefault(num, 0) + 1); } // 获取最大出现次数 int max = count.values().stream().max((a, b) -> a - b).orElse(0); // 将众数挑选出来 ArrayList<Integer> ans = new ArrayList<>(); for (Integer k : count.keySet()) { if (count.get(k) == max) ans.add(k); } // 众数升序 ans.sort((a, b) -> a - b); // 中位数取值 int mid = ans.size() / 2; if (ans.size() % 2 == 0) { // 偶数个数时,取中间两个位置的平均值 return (ans.get(mid) + ans.get(mid - 1)) / 2; } else { // 奇数个数时,取中间位置的值 return ans.get(mid); } } }
JS算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { const nums = line.split(" ").map(Number); console.log(getResult(nums)); }); function getResult(nums) { const count = {}; // 统计各数字出现次数 for (let num of nums) { count[num] = (count[num] ?? 0) + 1; } // 获取最大出现次数 const max = Math.max(...Object.values(count)); // 将众数挑选出来 const mode = []; for (let k in count) { if (count[k] == max) mode.push(parseInt(k)); } // 众数升序 mode.sort((a, b) => a - b); // 中位数取值 const mid = Math.floor(mode.length / 2); if (mode.length % 2 == 0) { // 偶数个数时,取中间两个位置的平均值 return Math.floor((mode[mid] + mode[mid - 1]) / 2); } else { // 奇数个数时,取中间位置的值 return mode[mid]; } }
Python算法源码
# 输入获取 nums = list(map(int, input().split())) # 算法入口 def getResult(): count = {} # 统计各数字出现次数 for num in nums: count[num] = count.get(num, 0) + 1 # 获取最大出现次数 maxCount = max(count.values()) # 将众数挑选出来 mode = [] for k in count: if count[k] == maxCount: mode.append(int(k)) # 众数升序 mode.sort() # 中位数取值 mid = len(mode) // 2 if len(mode) % 2 == 0: # 偶数个数时,取中间两个位置的平均值 return (mode[mid] + mode[mid - 1]) // 2 else: # 奇数个数时,取中间位置的值 return mode[mid] # 算法调用 print(getResult())
C算法源码
#include <stdio.h> #include <stdlib.h> #define MAX(a,b) ((a) > (b) ? (a) : (b)) #define MAX_SIZE 1000 #define MAX_VAL 1000 int cmp(const void* a, const void* b) { return (*(int*) a) - (*(int*) b); } int main() { // 输入数组 int nums[MAX_SIZE] = {0}; int nums_size = 0; while(scanf("%d", &nums[nums_size++])) { if(getchar() != ' ') break; } // 每个数的出现次数 int count[MAX_VAL] = {0}; // 最大出现次数 int maxCount = 0; for(int i=0; i<nums_size; i++) { count[nums[i]]++; maxCount = MAX(maxCount, count[nums[i]]); } // 众数数组 int mode[MAX_SIZE] = {0}; int mode_size = 0; for(int i=0; i<MAX_VAL; i++) { // 如果该数的出现次数是最大出现次数,则是众数 if(count[i] == maxCount) { mode[mode_size++] = i; } } // 众数数组升序 qsort(mode, mode_size, sizeof(int), cmp); // 取众数数组的中位数 int mid = mode_size / 2; if(mode_size % 2 == 0) { printf("%d\n", (mode[mid] + mode[mid - 1]) / 2); } else { printf("%d\n", mode[mid]); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 5:05:27

威力加强版数字人,直接封神!

友友们&#xff0c;之前给大家介绍过数字人领域的新晋王者——InfiniteTalk&#xff0c;有超稳定的性能、生成无限时长等功能。今天带来InfiniteTalk V2威力加强版&#xff0c;相较于同类产品普遍存在的卡顿、时长限制及付费门槛等问题&#xff0c;它实现了"免费无限时长生…

作者头像 李华
网站建设 2026/4/17 14:17:30

路由策略和策略路由区别是什么

在网络配置中&#xff0c;“路由策略”&#xff08;Route-Policy&#xff09;与“策略路由”&#xff08;Policy-Based Routing, PBR&#xff09;是两个高频出现但易混淆的概念。二者均用于优化网络流量转发&#xff0c;但核心逻辑、作用对象、应用场景存在本质差异。本文从多维…

作者头像 李华
网站建设 2026/4/23 12:35:29

CentOS 7 安装 docker 教程

检查系统版本 查看 CentOS 版本 cat /etc/centos-release 查看内核版本 uname -r 只要是 3.10.x 及以上即可 卸载旧版本 Docker yum remove -y docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logro…

作者头像 李华
网站建设 2026/4/23 11:14:21

找 Vue 后台管理系统模板看这个网站就够了!!!

前言在开发 Vue 后台管理系统时&#xff0c;一个美观、功能完善且易于扩展的模板能极大提升我们的开发效率。面对琳琅满目的 Vue 开源项目&#xff0c;如何快速找到真正实用、维护良好的模板成为关键。大姚给大家分享一个 Vue 后台管理系统模板大全&#xff0c;里面收录了大量开…

作者头像 李华
网站建设 2026/4/23 12:38:52

2025最新!8个AI论文工具测评:本科生写论文必备清单

2025最新&#xff01;8个AI论文工具测评&#xff1a;本科生写论文必备清单 2025年AI论文工具测评&#xff1a;如何选择适合自己的写作助手 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的AI论文…

作者头像 李华
网站建设 2026/4/23 12:57:24

为什么 Web 项目,也应该按 RN 的性能标准来设计

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

作者头像 李华