【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的数字游戏(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1079

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • 🍄 LYA的数字游戏
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入1
      • 样例输出1
      • 样例输入2
      • 样例输出2
      • 样例输入3
      • 样例输出3
      • 数据范围
      • 题解
      • 参考代码

🍄 LYA的数字游戏

问题描述

LYA发明了一个有趣的数字游戏。给定一组数字,先找出其中出现次数最多的数字,称为众数。如果有多个众数,就把它们按从小到大的顺序排列,组成一个新的数组。最后,求这个新数组的中位数作为游戏的结果。

中位数的定义如下:把一组数从小到大排列,如果数的个数是奇数,那么中间那个数就是中位数;如果数的个数是偶数,那么中间两个数的平均值就是中位数。

现在,LYA给了你一组数字,请你帮她找出游戏的结果。

输入格式

输入一行,包含若干个用空格分隔的整数,表示给定的数字序列。数字个数不超过 1000 1000 1000,每个数字大于 0 0 0 且小于 1000 1000 1000

输出格式

输出一个整数,表示新数组的中位数。

样例输入1

10 11 21 19 21 17 21 16 21 18 15

样例输出1

21

样例输入2

2 1 5 4 3 3 9 2 7 4 2 15 4 2 4

样例输出2

3

样例输入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

样例输出3

7

数据范围

  • 数字个数不超过 1000 1000 1000
  • 每个数字大于 0 0 0 且小于 1000 1000 1000

题解

首先,我们需要统计每个数字出现的次数,可以用一个哈希表来实现。然后,找出出现次数最多的数字,即为众数。如果有多个众数,就把它们按从小到大的顺序排列,组成一个新的数组。最后,求这个新数组的中位数即可。

求中位数时,如果数组长度为奇数,直接返回中间那个数;如果数组长度为偶数,返回中间两个数的平均值。

参考代码

  • Python
from collections import Counter

nums = list(map(int, input().split()))
cnt = Counter(nums)
max_cnt = max(cnt.values())
modes = sorted(k for k, v in cnt.items() if v == max_cnt)

n = len(modes)
if n % 2 == 1:
    print(modes[n // 2])
else:
    print((modes[n // 2 - 1] + modes[n // 2]) // 2)
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] input = sc.nextLine().split(" ");
        Map<Integer, Integer> cnt = new HashMap<>();
        for (String s : input) {
            int num = Integer.parseInt(s);
            cnt.put(num, cnt.getOrDefault(num, 0) + 1);
        }
        
        int maxCnt = Collections.max(cnt.values());
        List<Integer> modes = new ArrayList<>();
        for (int num : cnt.keySet()) {
            if (cnt.get(num) == maxCnt) {
                modes.add(num);
            }
        }
        
        Collections.sort(modes);
        int n = modes.size();
        if (n % 2 == 1) {
            System.out.println(modes.get(n / 2));
        } else {
            System.out.println((modes.get(n / 2 - 1) + modes.get(n / 2)) / 2);
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>

using namespace std;

int main() {
    string s;
    getline(cin, s);
    
    unordered_map<int, int> cnt;
    int num = 0;
    for (char c : s) {
        if (c == ' ') {
            cnt[num]++;
            num = 0;
        } else {
            num = num * 10 + (c - '0');
        }
    }
    cnt[num]++;
    
    int maxCnt = 0;
    for (auto p : cnt) {
        maxCnt = max(maxCnt, p.second);
    }
    
    vector<int> modes;
    for (auto p : cnt) {
        if (p.second == maxCnt) {
            modes.push_back(p.first);
        }
    }
    
    sort(modes.begin(), modes.end());
    int n = modes.size();
    if (n % 2 == 1) {
        cout << modes[n / 2] << endl;
    } else {
        cout << (modes[n / 2 - 1] + modes[n / 2]) / 2 << endl;
    }
    
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 交换机的安全配置

一、理论知识 1.交换机端口安全功能介绍 交换机端口安全功能是针对交换机端口进行安全属性的配置&#xff0c;以控制用户的安全接入。主要包括以下两种配置项&#xff1a; ①限制交换机端口的最大连接数&#xff1a;控制交换机端口连接的主机数量&#xff1b;防止用户进行恶…

不出网上线CS的各种姿势(内网横向)

情况一&#xff1a;存在一台中转机器 存在一台中转机器&#xff0c;这台机器出网&#xff0c;这种是最常见的情况。 经常是拿下一台边缘机器&#xff0c;其有多块网卡&#xff0c;用于连接内外网&#xff0c;内网机器都不出网。这种情况下拿这个边缘机器做中转&#xff0c;就…

【Linux】多线程的相关知识点

一、线程安全 1.1 可重入 VS 线程安全 1.1.1 概念 线程安全&#xff1a;多个线程并发执行同一段代码时&#xff0c;不会出现不同的结果。常见对全局变量或者静态变量进行操作&#xff0c;并且没有锁的保护的情况下&#xff0c;会出现问题。重入&#xff1a;同一个函数被不同…

学习笔记——动态路由——RIP(距离矢量协议)

一、距离矢量协议 1、距离矢量协议 矢量行为&#xff1a;协议收到一个路由之后&#xff0c;查看是否可以加入到本地的路由表中&#xff0c;如果可以加入&#xff0c;则可以传递&#xff0c;如果不可以加入&#xff0c;则无法传递。 距离矢量路由协议 RIP基于距离矢量算法(又…

百度Agent初体验(制作步骤+感想)

现在AI Agent很火&#xff0c;最近注册了一个百度Agent体验了一下&#xff0c;并做了个小实验&#xff0c;拿它和零一万物&#xff08;Yi Large&#xff09;和文心一言&#xff08;ERNIE-4.0-8K-latest&#xff09;阅读了相同的一篇网页资讯&#xff0c;输出资讯摘要&#xff0…

【前端面试】二叉树递归模板和题解

递归模板和步骤 递归题目的通用步骤递归模板总结1. 树的遍历&#xff08;DFS&#xff09;2. 二叉树的最大深度3. 二叉树的最近公共祖先 递归题目的记忆技巧 递归题目的通用步骤 明确递归函数的功能&#xff1a;确定递归函数的输入参数和返回值&#xff0c;明确函数的功能。基准…

stm32学习-硬件I2C读取MPU6050

配置流程 第一步&#xff1a;配置I2C外设&#xff0c;对I2C外设进行初始化&#xff08;替换上一篇文章的I2C_Init&#xff09; 第二步&#xff1a;控制外设电路&#xff0c;实现指定地址写的时序&#xff08;替换上一篇文章的WriteReg&#xff09; 第三步&#xff1a;控制外…

如何使能PCIe的ASPM?

1. ASPM概述 PCIe总线的电源管理包含ASPM(Active State Power Management)和软件电源管理两方面内容。所谓的ASPM是指PCIe链路在没有系统软件参与的情况下&#xff0c;由PCIe链路自发进行的电源管理方式。如下是PCIe的ASPM的状态机&#xff0c;其L1是强制性的规定&#xff0c;…

手机数据如何恢复?11 款最佳安卓手机恢复软件

媒体可能由于各种原因而从您的设备中删除&#xff0c;可能是意外或病毒攻击。 在这些情况下&#xff0c;照片恢复应用程序是唯一的解决方案。理想的照片恢复应用程序取决于各种因素&#xff0c;例如存储设备的损坏程度、删除照片后的持续时间以及应用程序使用的恢复算法的有效性…

视频融合共享平台LntonCVS视频监控平台在农场果园等场景的使用方案

我国大江南北遍布着各类果园。传统的安全防范方式主要是建立围墙&#xff0c;但这种方式难以彻底阻挡不法分子的入侵和破坏。因此&#xff0c;需要一套先进、科学、实用且稳定的安全防范报警系统&#xff0c;以及时发现并处理潜在问题。 需求分析 由于果园地处偏远且缺乏有效防…

银联支付,你竟然还不知道它怎么工作?

银联支付咱都用过&#xff0c;微信和支付宝没这么“横行”的时侯&#xff0c;我们取款、转账、付款时用的ATM机、POS机&#xff0c;都是银联支付完成的。 今天&#xff0c;就让咱们了解一下银行卡支付的工作原型。 首先&#xff0c;说说中国银联 中国银联&#xff08;China U…

骨干教师的评选条件

作为一名教师&#xff0c;我常在思考&#xff0c;什么样的教师才能被称为"骨干"&#xff1f;"骨干"不仅仅是一个荣誉的标签&#xff0c;更是一份沉甸甸的责任和使命。究竟什么样的条件才能成为评选骨干教师的标准呢&#xff1f; 必须具备扎实的专业知识。在…

Vscode lanuch.json

Intro 使用launch.json 能够方便的运行需要传很多参数的代码文件 如下&#xff1a; import math import argparse # 1、导入argpase包def parse_args():parse argparse.ArgumentParser(descriptionCalculate cylinder volume) # 2、创建参数对象parse.add_argument(--rad…

推荐三款必备软件,个个五星好评,你一定不要错过

WiseCare365 WiseCare365是一款由WiseCleaner推出的综合性Windows系统优化和加速工具。它集成了多种功能&#xff0c;旨在帮助用户清理、优化和维护电脑系统&#xff0c;提升电脑性能和安全性。 WiseCare365的主要功能包括&#xff1a; 系统清理&#xff1a;它可以清理各种缓存…

mysql学习——SQL中的DQL和DCL

SQL中的DQL和DCL DQL基本查询条件查询聚合函数分组查询排序查询分页查询 DCL管理用户权限控制 学习黑马MySQL课程&#xff0c;记录笔记&#xff0c;用于复习。 DQL DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记…

求职经验分享(12):找工作什么最重要?——项目篇

找工作什么最重要&#xff1f;——项目篇 找工作什么最重要&#xff1f;从小粉和老白的视角来看&#xff0c;我们认为最重要的是&#xff1a; 学历 & 实习 & 项目 很多同学经常在说背八股&#xff0c;背八股&#xff0c;其实我认为&#xff0c;八股只是在实习和项目不…

Modbus转Profibus网关在汽车行业的应用

一、前言 在当前汽车工业的快速发展中&#xff0c;汽车制造商正通过自动化技术实现生产的自动化&#xff0c;目的是提高生产效率和减少成本。Modbus转Profibus网关&#xff08;XD-MDPB100&#xff09;应用于汽车行业&#xff0c;主要体现在提升自动化水平、优化数据传输以及实…

每日一题——Python代码实现PAT甲级1006 Sign In and Sign Out(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 我要更强 优化建议 优化后的…

ONLYOFFICE 8.1:全面升级,PDF编辑与本地化加强版

目录 &#x1f4d8; 前言 &#x1f4df; 一、什么是 ONLYOFFICE 桌面编辑器&#xff1f; &#x1f4df; 二、ONLYOFFICE 8.1版本新增了那些特别的实用模块&#xff1f; 2.1. 轻松编辑器 PDF 文件 2.2. 用幻灯片版式快速修改幻灯片 2.3. 无缝切换文档编辑、审阅和查…

【教程】安装DGL环境

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 关于cuda的安装&#xff0c;可以看这个&#xff1a; 【教程】保姆级安装NVIDIA CUDA、CUDNN环境全纪录解决SSH一段时间自动断开报Destination Host Un…