华为OD机试 - 磁盘容量排序 - 双指针(Python/JS/C/C++ 2025 A卷 100分)

一、题目描述

磁盘的容量单位常用的有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、输入

3
2G
2048M
1G

2、输出

1G
2G
2048M

<think>嗯,用户想参加华为OD,需要学习建议。首先我得了解华为OD的考内容,可能包括数据结构、算法、编程题等等。然后用户可能需要知道如何系统地准备这些内容。 首先,我应该回顾华为OD大纲,确认主要考点。通常这类考会涉及算法题,比如动态规划、贪心算法、树、图等数据结构,还有字符串处理、数组操作等基础题目。另外,可能还有计算基础知识,比如操作系统、网络等,但不确定,需要确认。不过根据常见情况,可能更侧重编程和算法。 然后用户需要学习建议。可能需要阶段建议,比如先巩固基础,再刷题,然后模拟考。同时推荐一些资源,比如LeetCode、牛客网,或者《剑指Offer》这样的书籍。 还要考虑时间安排,用户可能需要制定一个学习计划,比如每天花多少时间练习。另外,注意代码的效率和正确性,因为通常有时间限制和测用例的要求。 可能还需要提醒用户注意编程语言的熟练度,比如选择自己擅长的语言,如Python、Java或C++,并熟悉该语言的标准库,比如排序、数据结构等常用函数。 另外,调能力和边界条件的处理也很重要,用户可能在解题时忽略特殊情况,导致测用例不通过。需要提醒他们多考虑不同的测案例,自己编写测代码验证。 可能还需要提到模拟考的重要性,找一些真题或者类似难度的题目进行限时练习,适应考节奏。 还要注意代码风格,虽然可能不强调这个,但清晰的代码结构有助于减少错误,方便调。 最后,可以鼓励用户保持持续练习,多总结错题,析解题思路,提升解题速度。</think>华为OD备考学习建议(阶段+重实践): ### 一、明确考重点 1. **题型结构**(参考历年真题): - **3道编程算法题**(难度递增) - **布**:简单题≈100,中等题≈100,难题≈200 - **通过标准**:总≥150且提交次数≤5次 2. **高频考点**: - **数据结构**:字符串处理、链表、二叉树、堆栈、哈希表 - **算法**:DFS/BFS、动态规划、二查找、滑动窗口、双指针 - **数学思维**:排列组合、位运算、贪心策略 ### 二、阶段学习计划 #### 阶段1:基础巩固(2-4周) - **必刷题库**: ```python # 示例:掌握字符串处理基础 def reverse_string(s: str) -> str: return s[::-1] # 使用切片实现O(1)空间复杂度 ``` - 《剑指Offer》经典50题(重点练习) - LeetCode热题HOT 100(完成前50道) - **学习工具**: - 使用**代码可视化平台**(如pythontutor.com)理解算法执行过程 - 建立错题本记录**边界条件**(如空输入、超大数值等) #### 阶段2:专项突破(3-5周) - **重点专题训练**: $$动态规划解题模板:\\ dp[i] = \max(dp[j] + value, dp[i-1]) \quad (0 \leq j < i)$$ - **每日专项**(示例计划): | 周一 | 周三 | 周五 | |------------|------------|------------| | 动态规划 | 图论算法 | 回溯算法 | - **进阶资源**: - 《算法导论》关键章节精读(如第15章动态规划) - 参加**Codeforces Div2**锻炼快速解题能力 #### 阶段3:实战模拟(2-3周) - **全真模拟训练**: ```java // 示例:处理输入输出效率 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int n = sc.nextInt(); // 处理逻辑... } } } ``` - 使用**牛客网**华为题库进行限时练习 - 参加**LeetCode周赛**培养时间管理能力 - **注意事项**: 1. 严格限制每题耗时≤30钟 2. 每道题至少设计3组测用例 3. 记录**调耗时**并析优化点 ### 三、应技巧 1. **答题策略**: - 优先确保前两题AC(正确提交) - 第三题争取部(如通过50%测用例) 2. **代码规范**: - 使用清晰的变量命名(如`max_depth`代替`a`) - 添加关键注释说明算法思路 3. **调技巧**: - 使用`print`调时标记输出(示例): ```python print("[DEBUG] current sum:", sum_val, "at index:", i) ``` ### 四、资源推荐 1. **在线平台**: - 华为OD真题库(牛客网专题) - LeetCode《华为题库》类 2. **辅助工具**: - VSCode + LeetCode插件(模拟考环境) - draw.io绘制算法流程图 **每日学习模板**: ``` 08:00-09:00 复习昨日错题 09:30-11:30 专题算法训练(如动态规划) 14:00-16:00 真题模拟(严格计时) 19:00-20:00 析最优解与复杂度 ``` 通过系统训练,平均备考周期约2-3个月可达达标水平。重点保持每日3-5题的编码量,并定期进行知识体系梳理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值