9.13华为OD机试真题 新系统 – 手机桌面整理 (JavaPyCC++JsGo)
2026 华为OD机试真题9月13日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
手机系统管理一个App列表,按最近使用App操作排序;
用户可以对App进行如下操作:
- OPEN Name: 打开App;若App已存在,将其移至列表最前面,打开次数 +1,返回当前打开次数;若App不存在,返回-1
- INSTALL name:安装App;若APP已存在,将其移至列表最前面,打开次数不变;若APP不存在,将其添加至列表最前面,打开次数设置为0;若列表已满,先卸载最久未使用APP再安装,INSTALL操作无返回值。
- UNINSTALL name:卸载App;若APP已存在,移除该APP并返回其打开次数;若APP不存在,返回-1。否则返回该APP的打开次数。
先给定一组用户操作指令,请统计所有OPEN和UNINSTALL操作的返回值。
2026 华为OD机试真题9月13日华为OD上机新系统考试真题 100 分题型
输入描述
参数 capacity(0≤capacity≤103) 为一个整数,表示 App 列表的长度上限。
参数 operations 为一个字符串数组,长度 len(1≤len≤103),每个元素是一条操作指令,格式为操作名与 App 名称之间用一个空格隔开,操作名为 OPEN、INSTALL、UNINSTALL 之一。
App 名称由英文字母或数字组成(区分大小写),名称长度 L(1≤L≤20)。
为了便于在线判题,输入的第一行为容量 capacity,后续每一行是一条操作指令,读取到文件结束为止。
输出描述
按顺序统计OPEN和UNINSTALL操作的返回值
示例1
输入
2
INSTALL G1
INSTALL L2
OPEN G1
INSTALL VS
OPEN L2
UNINSTALL G1
OPEN G1
输出
[1,-1,1,-1]
说明
INSTALL G1, 列表变为G1(0)INSTALL L2,列表变为L2(0) -> G1(0)OPEN G1``,列表变为G1(1) -> L2(0)`, open 返回1INSTALL VS, 列表变为VS(0) -> G1(1)OPEN L2, 不存在L2,返回-1- ``UNINSTALL G1
,列表变为VS(0)`, 返回1OPEN G1, 不存在G1,返回-1
示例2
输入
3
INSTALL WeChat
INSTALL Map
OPEN Map
OPEN Map
INSTALL WeChat
INSTALL Music
INSTALL Mail
OPEN Map
UNINSTALL Music
UNINSTALL Map
输出
[1,2,-1,0,-1]
说明
前两条安装后列表为
Map(0) -> WeChat(0),两次OPEN Map依次返回 1,2,列表为Map(2) -> WeChat(0)。
INSTALL WeChat时WeChat(0) -> Map(2)。
INSTALL Music后列表为Music(0) -> WeChat(0) -> Map(2),已满。
INSTALL Mail时先卸载最久未使用的Map,列表变为Mail(0) -> Music(0) -> WeChat(0)。
OPEN Map返回 −1,UNINSTALL Music返回其打开次数 0,UNINSTALL Map返回 −1。
示例3
输入
0
INSTALL Game
OPEN Game
UNINSTALL Game
输出
[-1,-1]
说明
列表长度上限为 0,一个 App 也放不下,
INSTALL Game装不进去,之后的OPEN Game与UNINSTALL Game都找不到该 App,各返回 −1。
解题思路
核心思想
本题虽然属于 LRU(Least Recently Used,最近最少使用)场景,但操作数量和容量都不超过 10^3,没有必要手写双向链表节点。
可以使用一个哈希表保存每个 App 的两个信息:
openCount:当前打开次数。lastUsed:最近一次成功执行OPEN或INSTALL时的时间戳。
每次成功使用 App,就把递增计数器作为新的 lastUsed。容量已满时,遍历当前已安装 App,删除 lastUsed 最小的一个即可。
算法步骤
- 初始化空哈希表和时间戳计数器
clock。 - 遇到
OPEN name:App 不存在时记录-1;否则打开次数加一,并更新其时间戳。 - 遇到
INSTALL name:已存在时只更新时间戳;不存在且容量为时忽略;桌面已满时删除时间戳最小的 App,再保存新 App,打开次数为。 - 遇到
UNINSTALL name:不存在时记录-1;否则记录其打开次数,再从哈希表中删除。 - 按产生顺序输出所有
OPEN和UNINSTALL的返回值。
复杂度分析
- 时间复杂度:
O(n × capacity),只有容量已满且安装新 App 时需要遍历当前桌面;在本题n、capacity ≤ 10^3的范围内最多约一百万次检查。 - 空间复杂度:
O(capacity),最多保存capacity个已安装 Ap