尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为OD机试C卷备考指南:双机位环境与算法考点全解析

华为OD机试C卷备考指南:双机位环境与算法考点全解析 1. 双机位C卷到底是什么先把这个“新规矩”吃透先说结论华为OD机试的C卷跟前几年的A卷、B卷相比最大的变化不是题目难度而是考试环境和监考方式——双机位监控。很多人第一次听到“双机位”就慌了以为是像考研复试那样要准备两个摄像头对着自己。实际考下来你会发现规则没有那么恐怖但确实有一些细节必须提前搞明白否则可能连考试入口都进不去。所谓双机位简单讲就是两套摄像设备同时开启主机位对着你的正面用来确认是本人作答、核对人脸副机位放在侧后方用来监控你的屏幕和桌面环境。副机位一般要求放在你的侧后方45度左右能同时拍到你的侧脸、电脑屏幕和手部动作。这个角度调节是有讲究的——太近了拍不到屏幕太远了看不清手部动作监考系统判定“画面异常”就可能被标记。我当时第一次参加模拟测试的时候就死在副机位的角度上。系统提示“副机位画面中未检测到屏幕区域”我调了三次角度才通过。这里有个经验给你先开副机位App把手机/平板放在侧后方人坐正然后看预览画面里是不是同时包含“你的侧脸电脑屏幕桌面区域”。如果只有脸或者只有屏幕都不行。别嫌麻烦模拟测试一定要做因为它不只是测设备还会测你的网络稳定性、浏览器兼容性、屏幕共享权限这些硬条件。再说C卷本身。C卷不是一套固定的卷子它更像一个考试的“代码版本”——题库是统一的但是不同的考试批次会从题库里按算法考点抽题组合。所以网上有人说“C卷就是新题”“C卷全是原题”都不准确。我的理解是C卷 双机位监考环境 动态抽题机制 算法考点分类明确的题库结构。抽题机制意味着你没法靠背某几道题来碰运气必须按考点系统准备。还有一点容易忽略C卷的作答环境是牛客网风格的在线OJOnline Judge不是本地IDE。你需要在一个网页编辑器里写代码、调试、提交。很多人平时用惯了IntelliJ IDEA或者VS Code突然切到网页编辑器自动补全没了、快捷键不熟了、连缩进都觉得别扭。这个东西必须考前练别指望现场适应。一句话总结这部分双机位关的是“作弊的门”但真正卡住大多数人的不是监考设备而是对在线OJ作答节奏、抽题范围、代码风格的不适应。2. 从真题拆解看到底考什么C卷考点分布与题型结构先给一张我根据多批次C卷回忆版题目整理出的考点分布表。这不是官方数据但覆盖面已经比较有代表性了我拿它做了三轮重点复习命中率不错。考点大类涉及子考点出现频次典型考法字符串处理子串匹配、字符串去重、字符统计、正则替换高给一段日志/命令让你解析出关键信息数组与模拟双指针、滑动窗口、前缀和、差分数组高模拟某种规则下的数据变化过程排序与查找自定义排序、二分查找、多关键字排序中高按多个条件对数据排序并输出结果数据结构设计栈、队列、优先队列、哈希表中用合适结构模拟真实场景如任务调度贪心算法区间问题、任务分配、最大化收益中排序贪心决策的经典组合动态规划背包、最长递增子序列、路径问题中需要抽象出状态转移方程图论基础并查集、最短路径BFS、拓扑排序中低场景化图问题比如网络连通性深度与广度优先DFS、BFS、回溯剪枝中高迷宫/路径/组合枚举类问题数学思维大数处理、最大公约数、质数判断、位运算中低考察数学建模能力代码本身不长注意看这个分布有几个特点。第一字符串处理和数组模拟是绝对大头两加起来占了小半壁江山。第二动态规划虽然重要但不会出那种一眼看不出来的超难DPC卷的DP题偏应用型场景清晰状态定义绕不过三道弯。第三图论不会出得太深基本是BFS最短路径、并查集连通性这个层级树形DP、网络流这种东西可以战略性放弃。再从题型结构看C卷一般是三道题我碰到的组合是这样的第一题简单题约100分——以字符串、数组操作为主考察基础编码能力和边界处理。难度约等于LeetCode的Easy到Medium边界。第二题中等题约200分——通常涉及模拟流程、数据结构设计、或者贪心/二分。需要你不仅会写算法还要能把题目的业务逻辑翻译成代码。第三题较难题约300分——以动态规划、BFS/DFS、复杂模拟为主。它的难点往往不是算法模板本身而是你能不能在限定时间内把题意理解清楚、把状态定义对。总分分布大概是100200300C卷整体通过分不是固定值跟当年、当批次的考生情况有关但基本策略是一致的第一题务必拿满分第二题尽量拿大部分分数第三题保底能写出暴力解或部分解。三道题都AC当然好但大部分人上岸靠的是“前两题稳、第三题不空”这个策略。关于真题来源我不建议轻信那些标着“全网首发”“内部流出”的PDF截图。因为题目是动态抽的且不同批次题号顺序会打乱你背一套截图意义不大。真正有价值的做法是用考点分类去训练以OJ上的真题风格题为训练材料重点练读题速度和代码实现速度。我后文会给出具体的OJ使用策略。3. 按考点分类逐个击破备考顺序、重点与模板代码备考节奏上我强烈建议别按“从LeetCode 1刷到300”这种顺序搞那是准备算法岗面试的做法不是准备OD机试的做法。你应该按考点优先级、按题目分值权重来排复习顺序。我当时的顺序是这样的字符串与数组先打底排序与查找热身数据结构设计建立工具库贪心算法形成思路DFS/BFS树与图的基础动态规划最难关卡数学技巧有余力再攻这个顺序的底层逻辑是前面几个考点是“高频且容易拿分”的能快速建立信心DFS/BFS和DP虽然分值高但需要前面的数据结构基础数学题属于锦上添花优先级降到最低。3.1 字符串处理高频且最容易在细节上翻车字符串处理在C卷里几乎是必考的但它考的不是什么高深算法而是你对边界情况的敏感度。比如给一个字符串让你把连续重复字符压缩这种题看着简单可考场上最容易出问题的是空字符串、单个字符、全相同字符、大小写混合。我见过太多人代码逻辑没问题就是没处理“输入可能带前后空格”这个情况结果挂在了隐藏测试用例上。一个实用提醒刷题时凡是字符串题一律在代码里显式处理输入strip——Python用strip()Java用trim()C自己遍历跳过首尾空白。养成这个习惯后我机试时第一道字符串题一次提交就AC了。再分享一个高频考法的模板思路统计字符出现次数并按要求输出。核心就是用哈希表计数然后根据题目要求的排序规则输出。这里容易掉进一个坑哈希表在Python 3.7虽然默认是有序的但这个有序是“插入序”不是“字典序”或“出现次数序”所以你要排序就老老实实排别依赖默认序。# 统计字符频率并按“频率降序、字符字典序升序”输出 from collections import Counter def solve(s: str) - str: if not s: return cnt Counter(s) # 先按字符字典序升序排再按频率降序排稳定排序实现双关键字 sorted_chars sorted(cnt.items(), keylambda x: (-x[1], x[0])) return .join(ch * freq for ch, freq in sorted_chars)这种题我用的是**“先计数、再定排序规则、最后按规则拼接”**三步法屡试不爽。你注意看代码里的keylambda x: (-x[1], x[0])负号实现降序后面的x[0]作为次级排序条件这是Python里实现多关键字排序的经典写法笔试高频用。3.2 数组、模拟与滑动窗口第二题的主要得分区C卷的100分简单题和200分中等题里数组和模拟类题目占比很大。模拟题的本质很简单题目描述了一个业务规则你写代码把这个规则一步一步跑出来。这种题不考算法智商考的是你能不能准确理解规则、有没有耐心处理复杂条件。我给你一个真实考过的模拟题思路有一串任务每个任务有到达时间和执行时长CPU按某种调度规则执行要求输出每个任务的完成时间。这类任务调度题考点就是优先队列堆 时间推进模拟。核心逻辑是把任务按到达时间排序。用优先队列维护“当前可执行的任务”按题目给的优先级规则出队。用一个变量current_time推进时间每次处理完一个任务再更新。这种题很容易写成长代码但你记住一个原则模拟题不怕代码长怕逻辑乱。我的做法是先画一个简化的状态流转图不是画给别人看的是自己理顺逻辑把“什么条件下做什么事”写清楚然后再动手写代码。滑动窗口也是C卷的热门考点。核心模板其实很短def sliding_window(s, k): n len(s) if n k: return None # 先初始化第一个窗口 window s[:k] result process(window) for i in range(k, n): # 窗口右移移除左边一个字符加入右边一个新字符 window window[1:] s[i] result update(result, process(window)) return result这个模板是框架具体题目要处理的是process和update是怎么定义的。滑动窗口的关键在于你能不能在O(n)时间内维护好窗口内的信息这决定了你是用哈希表、还是用计数数组、还是用双端队列。3.3 贪心算法把握“排序决策”的组合套路贪心题在C卷里通常以第二题或第三题的形式出现特点是题目看起来像复杂的最优化问题其实只要找到一个局部最优策略就能推出全局最优。比如区间调度问题给出一组区间的开始和结束时间问最多能安排多少个互不重叠的区间。经典贪心策略是按结束时间排序每次选择结束最早且与已选区间不重叠的区间。这个策略的直觉是早结束的区间给后面留了更多空间。但这里我要多说一句很多人背了“按结束时间排序”这个结论却不知道为什么遇到变形题就懵。比如换个考法——让你输出具体选了哪些区间或者改成“最少需要几个教室才能安排所有课程”解法就完全不一样了。前者还是按结束时间排后者变成了按开始时间排序用优先队列维护当前教室的最后结束时间。你看同样是区间问题排序关键字不同、数据结构不同、最终答案不同这就是为什么“背套路”不如“理解套路”。C卷贪心题的一个出题偏好是不会直接告诉你“这是一道贪心题”而是包装成业务场景比如资源分配、活动安排、最优调度。你的任务有两个一是识别出这是贪心二是证明说服自己这个贪心策略是对的。第二个任务特别重要因为如果你不敢确定策略对错写出来的代码会犹豫越犹豫越容易改错方向。3.4 DFS与BFS树的遍历和图的最短路径DFS和BFS在C卷里的地位比较稳基本会有一题。它们的高频考法是网格类题目给你一个二维矩阵求连通块数量、岛屿面积、最短路径步数等。状态转移类题目从一个初始状态到目标状态的最少步数比如拼图类问题。网格类BFS有个经典模板我在考场上是背下来的from collections import deque def bfs(grid): rows, cols len(grid), len(grid[0]) visited [[False] * cols for _ in range(rows)] # 方向数组四方向移动 dirs [(1,0), (-1,0), (0,1), (0,-1)] # 从起点开始 q deque() q.append((start_x, start_y)) visited[start_x][start_y] True steps 0 while q: for _ in range(len(q)): x, y q.popleft() # 判断是否到达终点 if (x, y) (target_x, target_y): return steps for dx, dy in dirs: nx, ny x dx, y dy # 边界判断 是否能走判断 是否已访问 if 0 nx rows and 0 ny cols and not visited[nx][ny] and grid[nx][ny] ! 障碍物: q.append((nx, ny)) visited[nx][ny] True steps 1 return -1 # 无法到达注意模板里的for _ in range(len(q))这层它保证了每轮while循环处理的都是“同一层”的节点这样steps每次加1就是走了多少步。如果你忘了这层循环把BFS写成单纯队列逐节点处理虽然也能遍历全图但steps的计算就乱了——这是BFS写法的经典坑点。DFS在C卷里更多出现在连通性问题和排列组合问题里配合回溯使用。回溯的模板就是“选→递归→撤销选择”三步核心调试难点在于撤销操作的位置。我见过太多人写了递归但忘了在递归返回后恢复现场导致后面的分支状态被污染。我的经验是每写一个回溯题先自己用一个小例子走一遍“选、递归、撤销”的过程确认递归返回时状态真的恢复了。这比反复试错调bug高效得多。3.5 动态规划不追求难题但求状态定义清楚动态规划是C卷第三题最常出现的考点也是很多人最怕的考点。但我给你的定心丸是C卷的DP题基本不会超纲到数位DP、斜率优化、状压DP这种层次最常考的就是“一维DP”和“二维DP”核心是背包类、路径类、序列类三种。我第一次考C卷时第三题就是一道典型的路径类DP从一个矩阵左上角走到右下角每次只能向下或向右走格子上的数字代表收益问最大收益是多少。这题你要是提前不知道DP模板现场可能用DFS硬搜数据量大一点就超时但如果你知道二维DP的套路5分钟就能写完def max_profit(grid): m, n len(grid), len(grid[0]) dp [[0] * n for _ in range(m)] dp[0][0] grid[0][0] # 初始化第一行和第一列 for j in range(1, n): dp[0][j] dp[0][j-1] grid[0][j] for i in range(1, m): dp[i][0] dp[i-1][0] grid[i][0] # 状态转移 for i in range(1, m): for j in range(1, n): dp[i][j] max(dp[i-1][j], dp[i][j-1]) grid[i][j] return dp[m-1][n-1]DP学习最容易出现的问题是看了答案茅塞顿开合上答案啥也不会。我的建议是你把DP题的训练分成三遍第一遍看着题解写目的是理解状态定义和转移方程。第二遍隔一天后不看题解重写目的是把思路内化。第三遍隔一周后重写目的是确认你真的掌握了而不是背下来了。这个方法很老土但确实有效。你不必刷几百道DP题但经典的背包、最长公共子序列、最长递增子序列、编辑距离、路径类这五类每类做透三道题一题简单、一题中等、一题变形C卷的DP题基本就能应付了。4. 高分实现的关键细节别让代码风格和输入输出拖你后腿很多人在机试挂掉不是算法不会写而是细节处理不到位。下面这些坑我几乎全踩过挨个说给你听。4.1 输入输出在线OJ最容易被扣分的隐形杀手C卷用的OJ在线判题系统对输入输出格式要求非常严格输出多一个空格、少一个换行都会被判成“格式错误”甚至直接“答案错误”。最常见的几类问题读多行输入比如第一行是整数n接下来n行是数据。很多新手用input()读一行忘记循环读n次。输出列表要求输出一行元素之间用空格分隔末尾可以可以有空格也可以没有。最安全的写法是 .join(map(str, arr))这样不会在末尾多出空格。浮点数精度有些题要求输出保留两位小数别用round()——它有时候会有“银行家舍入”问题。用格式化输出print(f{value:.2f})最稳。循环输入直到EOF有些题没说输入多少行只说到文件结束。Python里用while True: try: line input() except EOFError: break的套路。这里单独强调一下Python的input()读大输入慢的问题。如果某题的数据量比较大超过10万行输入你用input()逐个读会读得很慢可能踩TLE超出时间限制的线。正确的做法是import sys data sys.stdin.read().split() # 然后按顺序从data里取数据sys.stdin.read()一次把全部输入读进来再split()成列表按位置取又快又稳我机试时凡是输入量可能大的题目一律这么写。4.2 选择实现语言Python真的是最优解吗这个话题很多人有争议。我的看法是如果你Python和Java/C水平差不多机试选Python。原因有三个一是Python代码量小同样的算法思路Python可能20行Java要40行C要50行还容易出指针问题。机试时间有限代码越短出bug的概率越低调试时间越少。二是Python内置数据结构和函数非常强大。Counter做计数、deque做队列、heapq做优先队列、sorted配合key做自定义排序这些都是高频考点对应的现成工具写起来又快又不容易出错。三是OJ对Python的时间限制通常会放宽一些不同平台有差异但C卷的官方环境对Python比较友好你不需要担心因为常数太大被卡超时。但Python也有两个隐患递归深度限制和纯计算性能瓶颈。深度优先搜索如果用递归碰到深度超过1000的树就容易爆栈准备工作里需要显式调大import sys sys.setrecursionlimit(1000000)如果空间允许尽量把DFS写成栈显式循环或者想想能不能用BFS后者天然不用递归。4.3 从暴力到优化考场上的“三种速度”我在机试里总结出一个“三种速度”策略帮我在第三题上拿了意外的高分。具体是这样速度一暴力解。不优化直接枚举所有可能写出正确但可能超时的代码。这保证了我“有答案可交”。速度二优化解。在这个暴力解的基础上分析哪里是瓶颈——是重复计算还是无穷的搜索空间然后针对性优化。速度三题目和测试都验证过的解。确保极端边界也处理了数据量按题目范围测试过。考场上的正确打开方式是先全力写暴力解AC了再说没AC再拆瓶颈升级。很多人一上来就死磕最优解卡在中途交不上作品还不如先保底再优化。我认识一个一次通过的老哥他的策略更极致三题都先写暴力解能拿多少分拿多少分然后倒回去优化第一题确保简单题满分再看剩下的时间够不够优化第二题。这个策略看起来保守实际上性价比极高。因为C卷的通过线不是“三题全过”而是总分达到某个门槛你在简单题和中等题上多拿20分比在难题上多拿10分划算得多。4.4 代码模板与自查清单考前背好自己的“武器库”我考前给自己整理了一个模板文件不是作弊用的而是作为复习提纲。每个考点除了一段核心代码模板还有对应的自查点考点模板/工具自查点二分查找left/right边界更新写法用mid (leftright)//2还是mid (leftright1)//2死循环检查自定义排序sort(keylambda x: (-x[1], x[0]))先降序还是先升序多关键字顺序别写反DFS回溯选→递归→撤销撤销操作是否在递归返回后执行BFS队列层循环visited在入队时标记还是出队时标记应该在入队时标记滑动窗口右扩左缩什么时候更新左边界什么时候更新答案并查集路径压缩按秩合并find函数是否做了路径压缩堆heapq操作需要大顶堆时用“入堆负值”的技巧大数处理Python原生支持Java用BigIntegerC注意溢出考前把这份清单过一遍考场上写代码的底气完全不一样。这也是我推荐给你最重要的备考提效动作。5. 在线刷题OJ怎么选、怎么用告别低效刷题机试之所以难很大程度上是因为你平时可能适应了IDE的舒适区。在线OJ的手感和本地IDE完全不一样没有自动补全、没有代码提示、报错信息也更简单粗暴。所以“在OJ上刷题”这件事本身就是备考的一部分不只是为了练算法。5.1 刷题平台的选型别急着氪金华为OD机试的官方在线环境一般基于牛客网风格的OJ。所以我在备考期主刷的是牛客网的华为OD专栏题库同时辅助用力扣LeetCode和赛码网。给你我的选型逻辑牛客网跟真实机试环境最接近题型密度大且有专门的华为OD题库分类。缺点是部分题解质量参差不齐需要自己过滤。力扣算法体系最完整题解质量高适合按“考点”系统学习。但题型风格与OD机试有差异——力扣偏纯算法OD机试题更偏“业务场景包装”。赛码网也采用OJ风格但题量相对少作为补充即可。我的建议是把牛客当主战场把力扣当教材赛码看情况选。而很多培训机构的“付费小班题库”除非你能确认题目来源可靠、更新频率正常否则不必急着氪金。真正决定你能不能过的是你刷了多少题、理解了多少套路而不是你买了多少题库。5.2 刷题策略好钢用在刀刃上刷题最忌讳的是“广撒网”——今天刷一道链表、明天刷一道字符串看到什么刷什么。你要做的是按考点集中轰炸。我用一个“三周循环法”来安排刷题第1~3天只刷字符串和数组目标是把手感找回来。每道题都要求自己在15分钟内写完并AC。第4~9天刷排序、二分、数据结构设计、贪心重点是总结套路。每道题AC之后在笔记里写一句“这道题的核心套路是什么”。第10~14天主攻DFS、BFS、DP这是最难啃的部分。每天至少2道DFS/BFS、1道DP不求多但每一道都必须真正吃透。第15~21天模拟考试节奏每天一套真题或模拟题定时、断网、开双机位模拟环境把考试状态练出来。这个循环可以根据你实际剩余时间压缩但核心思想不变先把高频简单考点练到肌肉记忆再集中攻难考点最后用模拟考试来验收。关于“刷多少题才够”我给你个参考如果按我这种方式认真刷了60~80道题其中高频考点覆盖到了C卷第一题和第二题的把握就很大了想冲第三题要把DFS/BFS和DP各刷到20道以上。注意这里说的“刷到”是“合上答案能独立AC”不是“看过题解”就算。看题解算半道自己AC才算一道这个标准不能放水。5.3 高性价比的刷题法一题多解与错题重刷高分段的考生之间刷题量的差距没有你想象的大真正的差距在复盘质量。我每道题AC之后会花10~15分钟做两件事第一件事看一下题解区有没有更优解法。比如我自己用暴力法AC了但题解里有O(n)的前缀和解法我就会认真琢磨那个思路并且尝试不看代码重写一遍。这样一题练两遍效率比刷两道新题高。第二件事记录这道题让我踩了哪个坑。我会专门建一个“坑点清单”文档比如“substring的endIndex是开区间要减1”“二分搜索死循环的原因是mid界定了左闭右闭区间但更新时不加一”等。考前复习两个小时这个清单比刷十道题都管用。再补充一个很多人忽略的细节错题重刷比新题重要得多。今天的模拟考做错了一道DP题明天马上重做一遍一周后再重做一遍。三次都AC了这道题才算真正变成你的。只做一遍的题过两周基本就忘了下次遇到还是不认识。5.4 模拟考试双机位环境的“实战预演”我在前文反复强调模拟考试的重要性这里给一个具体的模拟方案硬件准备一台电脑连网配摄像头、一台手机/平板作为副机位。副机位的支架最好提前买好我用的是一个几十块的手机落地架角度调节比桌面支架灵活很多。软件准备确认你用的浏览器和OJ兼容。我遇到过部分浏览器下OJ页面无法唤起摄像头权限的问题提前在官方模拟环境里测一遍就能规避。时间纪律严格按照真实机试的时间来限时。到了时间就强制交卷不管有没有做完。这一条的核心目的是练时间分配能力——很多人在考场上不是不会做而是前两题死磕太久第三题连看都没来得及看。心态模拟模拟时故意在中间插入一些突发情况比如电脑弹窗、副机位App掉线练习自己怎么快速恢复。真实考试时监考系统偶尔会弹风险提示别慌先看清提示原因再按规定处理。我按这个方案做了四次模拟考试第一次第三题交的是暴力解第二次已经能稳定拿到第二题的大部分分数了到第四次模拟时我已经能按“先暴力A掉第一题再集中精力优化第二题剩20分钟给第三题写部分解”的节奏稳定执行。6. 机试当天的实战经验从进场到交卷的完整时间线最后聊点考场上最实际的东西。很多人总觉得算法是核心竞争力但机试当天你会发现流程熟悉度同样会影响你的发挥。6.1 开考前15分钟设备自检要盯这五个地方考试入口开放后先别急着点“开始考试”。把下面五件事一项项确认完再开考双机位画面是否正常——主机位能看到全脸副机位能看到侧脸屏幕手部。网络是否稳定——用测速工具看一眼上行带宽和延迟。机试对下行要求不高但上行摄像头画面传输很吃带宽。我当时租的房子WiFi不稳直接改成了手机热点连笔记本画面传输稳很多。浏览器权限——摄像头、麦克风、屏幕共享权限都要允许。输入法——提前切到英文输入法。中文输入法在OJ里容易导致半角全角符号错误甚至自动弹词打断思路。屏幕亮度与分辨率——分辨率太低可能导致OJ页面显示不全有些按钮要点不到。这些检查提前做好了开考后你就能把全部精力放在题上。6.2 开考后0~15分钟全局浏览与“先易后难”拿到试卷后我建议花2~3分钟把三道题都通读一遍别急着写代码。读题时的关注点是每道题的输入规模是多少——这决定你用暴力法还是优化法。每道题的时间和内存限制——网络OJ上会标别忽略。第三道题是否真的很难——有时候它只是包装复杂算法内核很简单早点识别出来能多拿很多分。然后按顺序做还是跳着做我的建议是从易到难但要在第一题上别省时间。第一题是最不该丢分的哪怕题目看起来简单也要认真读完样例说明确认输入输出格式一次写好。很多人在第一题上觉得简单就草草提交结果因为格式问题来回改反而浪费了时间。我的个人节奏参考0~20分钟完成第一题提交AC。20~60分钟全力攻第二题先实现核心逻辑再挤时间处理边界。60~90分钟写第三题。如果第二题已经AC这里安心攻坚如果第二题还没完全通过评估一下第三题和剩余时间的性价比。最后10分钟无论写到什么程度停下笔做全局检查——按题目给的示例重新跑一遍确认输出格式一致确认没有多余的调试输出语句print调试信息忘了注释掉是机试大忌。6.3 考场上心态崩了怎么办用“拆分法”化解难题最后分享一个我考场上悟出来的调整方法。机试时我碰到第三题一开始完全没思路盯着屏幕五分钟大脑空白。我当时做了这样一个动作把题目里的示例数据拿出来用手算一步一步推演答案是怎么得到的。推了一遍之后我发现那道题本质就是“按优先级依次处理任务”的模拟题于是拆成“数据读取→排序/入堆→循环处理→输出结果”四步一步步写最后居然拿到了大部分分数。这个方法现在回想起来核心逻辑就是别让大脑停在“我不会”的抽象恐惧里用具体的样例数据强迫它开始运作。一旦开始手算样例你的大脑就从“判断模式”切换到了“计算模式”思路就会慢慢出来。这个方法不保证让你做出所有题但至少能防止你在考场上直接交白卷。写在后面的话考完C卷回头看我最深的体会是华为OD机试的C卷与其说是在考算法不如说是在考你在有限时间内、受约束环境下解决问题的能力。算法基础当然是底座但决定成败的往往是那些看起来不起眼的细节——双机位的调试、OJ的输入输出习惯、时间的分配策略、面对难题时的应对动作。把这些细节练到位再配合按考点分类的系统训练你完全有机会稳稳拿下这场考试。希望这份经验能帮你少走我走过的那些弯路。
返回列表