华为OD机试真题 Java 实现【磁盘容量排序】【2022Q4 100分】,附详细解题思路

news2025/2/25 18:19:09

在这里插入图片描述

一、题目描述

磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T = 1024G,1G = 1024M,现在给定n块磁盘的容量,

请对它们按从小到大的顺序进行稳定排序,例如给定5块盘的容量,1T,20M,3G,10G6T,3M12G9M排序后的结果为20M,3G,3M12G9M,1T,10G6T

注意单位可以重复出现,上述3M12G9M表示的容量即为3M+12G+9M,和12M12G相等。

二、输入描述

输入第一行包含一个整数n(2 <= n <= 100),表示磁盘的个数,接下的n行,每行一个字符串(长度大于2,小于30),表示磁盘的容量,

由一个或多个格式为mv的子串组成,其中m表示容量大小,v表示容量单位,例如20M,1T,30G,10G6T,3M12G9M

磁盘容量m的范围为1到1024的正整数,容量单位v的范围只包含题目中提到的M,G,T三种,换算关系如题目描述。

三、输出描述

输出n行,表示n块磁盘容量排序后的结果。

四、解题思路

  1. 读取输入的磁盘个数 n;
  2. 创建一个二维数组 num,用于存储磁盘的索引和转换后的容量;
  3. 创建一个映射 map,用于将磁盘的索引和原始容量进行映射;
  4. 循环读取 n 行输入,每行为一个磁盘的容量字符串;
  5. 对于每个磁盘容量字符串:
    • 初始化容量和索引变量 sum 和 index,初始值为 -1;
    • 遍历容量字符串的每个字符:
      • 如果当前字符为 ‘M’,将 index 后到当前位置的子串转换为整数并加到容量 sum 上,更新 index 为当前位置。;
      • 如果当前字符为 ‘G’,将 index 后到当前位置的子串转换为整数,并乘以 1024,加到容量 sum 上,更新 index 为当前位置。;
      • 如果当前字符为 ‘T’,将 index 后到当前位置的子串转换为整数,并乘以 1024*1024,加到容量 sum 上,更新 index 为当前位置。
    • 将磁盘的索引和转换后的容量存入二维数组 num 中。
  6. 使用 Arrays.sort() 方法对二维数组 num 进行排序,排序规则为先按容量升序排列,容量相同时按磁盘索引升序排列。
  7. 遍历排序后的二维数组 num,根据索引从映射 map 中取出对应的原始容量字符串,并输出。

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    sc.nextLine();

    int[][] num = new int[n][2];
    Map<Integer, String> map = new HashMap<>();

    for (int i = 0; i < n; i++) {
        int sum = 0;
        int index = -1;
        String str = sc.nextLine();
        map.put(i + 1, str);
        for (int j = 0; j < str.length(); j++) {
            if (str.charAt(j) == 'M') {
                sum += Integer.parseInt(str.substring(index + 1, j));
                index = j;
            } else if (str.charAt(j) == 'G') {
                sum += Integer.parseInt(str.substring(index + 1, j)) * 1024;
                index = j;
            } else if (str.charAt(j) == 'T') {
                sum += Integer.parseInt(str.substring(index + 1, j)) * 1024 * 1024;
                index = j;
            }
        }
        num[i][0] = i + 1;
        num[i][1] = sum;

    }
    Arrays.sort(num, (e1, e2) -> (e1[1] == e2[1] ? (e1[0] - e2[0]) : (e1[1] - e2[1])));  //对二维数组进行排序

    for (int i = 0; i < n; i++) {
        if (i == n - 1) {
            System.out.print(map.get(num[i][0]));
        } else {
            System.out.println(map.get(num[i][0]));
        }
    }
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

Linux NGINX^Tomcat 负载均衡 动静分离集群

---------------------NginxTomcat负载均衡、动静分离------------------------- 由于NGINX静态页面处理能力强&#xff08;2-3w并发&#xff09;资源消耗低&#xff0c;但动态页面处理能力弱&#xff0c;所以将其与Apache结合&#xff0c;使用Apache的动态网页能力补足NGINX的…

哨兵2号(Sentinel-2)卫星数据批量处理

李国春 2021 10 11 哨兵2号&#xff08;Sentinel-2&#xff09;数据广受欢迎&#xff0c;数据质量好&#xff0c;还免费。人家欧空局有自己的处理软件&#xff0c;也有控制台命令行的批量处理。RSD也来凑凑热闹沾个光&#xff0c;指不定有人喜欢不同的操作风格&#xff0c;愿意…

毫米波雷达IWR1642和DCA1000 EVM环境搭建

本文以毫米波雷达IWR1642和DCA1000进行环境搭建以及数据采集。 介绍 mmWaveStudio GUI设计用于表征和评估TI Radar器械。mmWaveStudio通过SPI向mmWave设备发送命令来配置和控制mmWave设备。使用DCA 1000 EVM或TSW 1400 EVM板捕获ADC数据&#xff0c;并在Matlab中处理数据&…

RL - 强化学习 马尔可夫奖励过程 (MRP) 的状态价值

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131084795 GitHub 源码: https://github.com/SpikeKing/Reinforcement-Learning-Algorithm 马尔可夫奖励过程 (MRP) 的状态价值是指在某…

【unity细节】Default constructor not found for type Player(找不到默认构造函数)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐Default constructor not found for type Player ⭐ 文章目录 ⭐Default const…

python爬虫入门,10分钟就够了,这可能是我见过最简单的基础教学

一、基础入门 1.1什么是爬虫 爬虫(spider&#xff0c;又网络爬虫)&#xff0c;是指向网站/网络发起请求&#xff0c;获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为&#xff0c;把站点返回的HTML代码/JSON数据/二进制数据&…

Fabric.js 使用自定义字体

theme: smartblue 本文简介 点赞 关注 收藏 学会了 如果你使用 Fabric.js 做编辑类的产品&#xff0c;有可能需要给用户配置字体。 这次就讲讲在 Fabric.js 中创建文本时怎么使用自定义字体、在项目运行时怎么修改字体、以及推荐一个精简字体库的工具。 学习本文前&#xff…

征稿|IJCAI‘23大模型论坛,DeepMind EleutherAI Oxford主题报告

第一届LLMIJCAI’23 Symposium征稿中&#xff0c;优秀投稿论文推荐《AI Open》&#xff08;EI检索&#xff09;和 《JCST》(CCF-B)发表。 大规模语言模型&#xff08;LLMs&#xff09;&#xff0c;如ChatGPT和GPT-4&#xff0c;以其在自然语言理解和生成方面的卓越能力&#xf…

调用腾讯API实现人脸美颜

目录 1. 作者介绍2. 人脸美颜基本原理2.1 获取人脸关键点信息2.2 基于皮肤区域的祛斑算法2.3 脸部器官美型处理2.4 美妆处理 3. 实验流程&#xff08;附代码&#xff09;及结果3.1 调用腾讯API流程3.2 安装依赖库3.3 代码实现3.4 实现结果 常见问题报错以及解决方案 1. 作者介绍…

【备战秋招】JAVA集合

集合 前言 一方面&#xff0c; 面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象 的操作&#xff0c;就要 对对象进行存储。 另一方面&#xff0c;使用Array存储对象方面具有一些弊端&#xff0c;而Java 集合就像一种容器&#xff0c;可以动态地把多…

Towards Blockchain-Based Reputation-Aware Federated Learning

Towards Blockchain-Based Reputation-Aware Federated Learning FINE-GRAINED FEDERATED LEARNINGA. Problem StatementB. DefinitionC. Requirements BLOCKCHAIN-BASED REPUTATION-AWARE FL 论文地址&#xff1a;https://www.researchgate.net/profile/Muhammad-Habib-Ur-Reh…

ChatGPT中文版写日报神器【AI使用技巧】

写日报对于打工人来说是一件枯燥无味又不得不做的工作。有了ChatGPT写日报不再是一件苦差事&#xff0c;分分钟搞掂&#xff0c;你不来试一下吗&#xff1f; ChatGPT中文站https://ai-cn.co提问&#xff1a;我是一名服务端程序员&#xff0c;负责维护商城系统&#xff0c;帮我…

HTTPS安全连接的建立过程

HTTP (Hypertext Transfer Protocol) 和 HTTPS (Hypertext Transfer Protocol Secure) 都是用于在 Web 浏览器和服务器之间传输数据的协议。它们之间的主要区别在于安全性。 HTTP 是一种不安全的协议&#xff0c;因为它在传输过程中不对数据进行加密。这意味着如果有人截取了数…

【立体视觉(二)】之对极几何与关键矩阵

【立体视觉&#xff08;二&#xff09;】之对极几何与关键矩阵 一、对极几何二、关键矩阵一&#xff09;本质矩阵与基础矩阵二&#xff09;本质矩阵的求解三&#xff09;本质矩阵的分解三&#xff09;单应矩阵及其求解 此为个人学习笔记&#xff0c;在各处借鉴了不少好图好文&a…

Ubuntu18.04利用astra pro相机实现ORB—SLAM3实时点云稠密建图—上

Ubuntu18.04利用astra pro相机实现ORB—SLAM3实时点云稠密建图—上 前言前期准备—ROS完整安装 OpenCV的安装&#xff08;4.2.0&#xff09;安装依赖C11特性的编译器Pangolin测试pangolin程序 EigenboostORB-SLAM3 前言 建议编译ORB-SLAM3的硬件设备内存配置至少4GB以上&#…

LinuxSCP和SSH命令

scp命令 cp命令&#xff0c;是拷贝的作用&#xff0c;可以实现将文件或者目录拷贝到另外一个位置。 scp命令&#xff0c;也是拷贝的作用&#xff0c;但是是远程拷贝&#xff0c;可以实现将文件或者目录拷贝到另外的一台机器上。 命令格式 # scp file 远程用户名远程服务器:目标…

Midjourney竞品Leap免费试用; Google 刚刚发布10门独立AI课程

&#x1f989; AI新闻 &#x1f680; Midjourney竞品&#xff0c;免费试玩AI图片生成工具Leap&#xff0c;细节还需提升 摘要&#xff1a;Leap是一款免费试玩的AI图片生成工具&#xff0c;用户可以选择不同的生成模型和步长及数量。功能上尚需提高细节把握能力&#xff0c;但…

【genius_platform软件平台开发】第九十七讲:linux设备驱动中信号(signal函数)的异步通知机制

1. 信号的异步通知 意思是:一旦设备就绪,则主动通知应用程序&#xff0c;这样应用程序根本就不需要查询设备状态&#xff0c;这一点非常类似于硬件上“中断”的概念&#xff0c;比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟&#xff0c;在…

创新升级!深度学习算法注入机器视觉应用,助力工业领域智慧生产

随着人工智能在算力、算法、大数据等方面的技术突破&#xff0c;基于神经网络的深度学习算法在各行各业加速渗透。而制造业作为AI融合创新的主要场景之一&#xff0c;在机器视觉技术的加持下&#xff0c;持续赋能生产线的自动化、智能化升级&#xff0c;赋予工业生产“感知”能…

【Java se】为什么大部分小数在计算机中是不精确的

目录 一、什么是小数 二、浮点数在计算机中的转换规则 &#xff08;1&#xff09;整数部分转换步骤 &#xff08;2&#xff09; 小数部分转换步骤 三、使用代码说明 四、手动转换小数 一、什么是小数 在计算机中&#xff0c;也称小数为浮点数&#xff0c;因为在使用科学计…