ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

华为OD机试真题 新系统 2026-09-13 PythonJS【手机桌面整理】

华为OD机试真题 新系统 2026-09-13 PythonJS【手机桌面整理】 目录题目思路Code题目题目内容手机系统维护一个 App 列表列表按最近操作顺序排列最前面是最近操作的 App。OPEN name若 App 已存在将其移到列表最前面打开次数加 1并返回当前打开次数若不存在返回 -1。INSTALL name若 App 已存在只将其移到列表最前面打开次数不变若不存在将其安装到最前面并把打开次数设为 0。列表已满时先卸载最久未使用的 App。INSTALL 不产生返回值。UNINSTALL name若 App 已存在将其移除并返回累计打开次数若不存在返回 -1。请按操作顺序收集所有 OPEN 和 UNINSTALL 的返回值。0 ≤ capacity ≤ 1000操作数为 1 至 1000。App 名称由英文字母或数字组成区分大小写长度为 1 至 20。输入描述第一行输入桌面容量 capacity。后续每行输入一条操作指令直到文件结束。指令格式为操作名、一个空格和 App 名称。输出描述输出一个整数数组按发生顺序记录所有 OPEN 和 UNINSTALL 操作的返回值。INSTALL 不写入数组。样例 1以下样例按公开题意构造不冒充公开页面被截断的原样例。输入2 INSTALL A OPEN A INSTALL B OPEN A UNINSTALL B输出[1,2,0]样例 2以下样例按公开题意构造。输入1 INSTALL A INSTALL B OPEN A OPEN B输出[-1,1]思路整体思路同时维护 App 的最近操作顺序和累计打开次数。顺序表头表示最近操作表尾表示最久未使用。第一步OPEN 命中时把次数加 1 并移动到表头未命中时只记录 -1不改变列表。第二步INSTALL 命中时只移动位置未命中时先检查容量满容量就删除表尾再把新 App 以次数 0 插入表头。第三步UNINSTALL 命中时先记录当前次数再删除未命中时记录 -1。只有 OPEN 和 UNINSTALL 产生输出。第四步容量为 0 时任何 App 都不能保留INSTALL 不产生状态后续 OPEN 和 UNINSTALL 都按不存在处理。正确性说明每种操作都严格按题目更新列表位置与计数表头到表尾始终保持最近到最久的顺序因此满容量时删除表尾恰好淘汰最久未使用的 App。边界处理支持零容量、重复安装、重复打开、卸载后再次访问、大小写不同的名称和空返回数组。复杂度分析采用链表加映射时每次操作可达 O(1)部分语言为保持实现直观使用长度最多 1000 的顺序数组单次 O(capacity)仍满足公开规模。Codeimport sys def move_to_front(order: list[str], name: str) - None: # order 从前到后保存最近到最久使用的 App删除后插到下标 0 可恢复该不变量。 order.remove(name) order.insert(0, name) lines [line.strip() for line in sys.stdin.read().splitlines() if line.strip()] capacity int(lines[0]) operations lines[1:] order: list[str] [] open_counts: dict[str, int] {} answers: list[int] [] for operation in operations: action, name operation.split(maxsplit1) if action OPEN: if name not in open_counts: answers.append(-1) continue open_counts[name] 1 move_to_front(order, name) answers.append(open_counts[name]) elif action INSTALL: if name in open_counts: move_to_front(order, name) continue # 容量为 0 时桌面不能容纳 App安装操作按无返回值处理。 if capacity 0: continue if len(order) capacity: expired order.pop() del open_counts[expired] order.insert(0, name) open_counts[name] 0 else: if name not in open_counts: answers.append(-1) continue answers.append(open_counts.pop(name)) order.remove(name) # 只收集 OPEN 和 UNINSTALL 的返回值INSTALL 不占输出位置。 # 输入首行是容量后续循环逐条读取操作名称区分大小写计数状态只属于当前已安装的 App。 # 每个操作分支都同时维护顺序集合和次数映射避免淘汰或卸载后留下可再次命中的旧状态。 # 答案数组只记录 OPEN 与 UNINSTALL 的返回值最终输出顺序必须与输入操作发生顺序一致。 print([ ,.join(map(str, answers)) ])JSconst fs require(fs); const lines fs.readFileSync(0, utf8).split(/\r?\n/).map( (line) line.trim() ).filter(Boolean); const capacity Number(lines[0]); // order 从前到后表示最近到最久操作counts 保存每个已安装 App 的累计打开次数。 const order []; const counts new Map(); const answers []; function moveToFront(name) { const index order.indexOf(name); order.splice(index, 1); order.unshift(name); } for (const operation of lines.slice(1)) { const space operation.indexOf( ); const action operation.slice(0, space); const name operation.slice(space 1).trim(); if (action OPEN) { if (!counts.has(name)) { answers.push(-1); continue; } counts.set(name, counts.get(name) 1); moveToFront(name); answers.push(counts.get(name)); } else if (action INSTALL) { if (counts.has(name)) { moveToFront(name); continue; } // 容量为 0 时安装无法落入列表且 INSTALL 本身没有返回值。 if (capacity 0) { continue; } if (order.length capacity) { counts.delete(order.pop()); } order.unshift(name); counts.set(name, 0); } else { if (!counts.has(name)) { answers.push(-1); continue; } answers.push(counts.get(name)); counts.delete(name); order.splice(order.indexOf(name), 1); } } // JSON.stringify 产生题目要求的紧凑数组且自然覆盖无返回值时的空数组。 // 输入首行是容量后续循环逐条读取操作名称区分大小写计数状态只属于当前已安装的 App。 // 每个操作分支都同时维护顺序集合和次数映射避免淘汰或卸载后留下可再次命中的旧状态。 // 答案数组只记录 OPEN 与 UNINSTALL 的返回值最终输出顺序必须与输入操作发生顺序一致。 console.log(JSON.stringify(answers));【华为od机试真题PythonJSJavaGo合集】【超值优惠】Py/JS/Java/Go合集【华为od机试真题Python】Python真题题库【华为od机试真题JavaScript】JavaScript真题题库【华为od机试真题JavaGo】JavaGo真题题库【华为od机试真题C】C真题题库【华为od机试真题C语言】C语言真题题库【华为od面试手撕代码题库】面试手撕代码题库【华为od机试面试交流群】【文章底部有二维码链接可扫码加交流群】华为OD机试:二本院校有机会吗? 有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。
返回列表