5.13华为OD机试真题 新系统 - 社交网络相同爱好好友查询 (JavaPyCC++JsGo)
#社交网络相同爱好好友查询2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型点击查看华为 OD 机试真题完整目录2026最新华为OD机试新系统卷 双机位C卷 真题题库目录全覆盖题库 逐点算法考点详解题目描述在一个社交网络中用户之间通过关注关系形成有向图。每个用户有两个属性用户 ID整数字符串兴趣标签列表字符串数组现在需要实现一个函数查询在指定用户 k 跳内k 度关系内其他用户的兴趣和给定用户兴趣相符的用户 ID 列表不含自己。注意兴趣相符是指两个用户的兴趣列表有交集。实现函数queryFriends(nodes,relations,myId,maxHop)2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型输入描述nodes - 用户节点数据 * 类型字符串二维数组/向量 * 每行表示一个用户包含[id, 兴趣1, 兴趣2, ...]* 示例[0, music, reading]表示用户 0有 2 个兴趣music 和 reading * 所有用户 ID 是 0 到 n-1 的连续整数对应的字符串relations - 关注关系 * 类型字符串二维数组/向量 * 每行表示一个关注关系[关注者ID, 被关注者ID]* 示例[0, 1]表示用户 0 关注了用户 1myId - 起始用户 ID示例0maxHop - 最大跳数 k示例2输入格式一行nodes、relations、myId、maxHop 用逗号分隔例如[[0,music,sports],[1,music,reading]],[[0,1]],0,2输出描述内容所有满足条件的用户 ID 及共同的兴趣列表如[[1,music],[3,music,sports]]格式 1不同用户之间按以下规则排序按与起始用户的最短距离从小到大排序距离相同的用户按ID对应整数值进行从小到大排序格式 2对于具体某用户与起始用户的共同兴趣列表按以下规则排序按照 ASCII 码序从小到大排序如果没有满足条件的用户返回空数组[]约束条件用户数 n: 1≤n≤10^4可认为用户的 id 字符串对应整数范围符合该条件关注关系数 m: 0≤m≤2×10^4若关系任一端包含不存在的点应该自动忽略不影响原始查询诉求最大跳数 k: 1≤k≤100大于最大跳数按照上限 100 对待每个用户最多 10 个兴趣标签可认为所有用户的兴趣个数符合该条件给定查询条件中的起始用户 ID 一定存在示例1输入[[0,music,sports],[1,music,reading],[2,music],[3,play,music,sports]],[[0,1],[1,2],[2,3],[0,3]],0,2输出[[1,music],[3,music,sports],[2,music]]说明从 ID0 出发兴趣相同3 跳内可以匹配到用户1、2、3同时用户1、3跳数少因此用户1、3在用户2之前。又因为1相比于3整数序靠前因此用户1在用户3之前。用户3中匹配到了多项爱好根据字母序排列music在sports之前。示例2输入[[0,music],[1,music],[2,music],[3,music],[4,music]],[[0,1],[1,2],[2,3],[3,4]],0,1输出[[1,music]]说明所有用户都满足兴趣条件但是跳数限制在 1 跳内因此仅用户1满足条件示例3输入[[0,music]],[],0,2输出[]说明不存在满足条件的结果返回空数组解题思路核心思想本题分为两个阶段图搜索和集合匹配。阶段一BFS 多源/单源有向图遍历- 构建邻接表关注关系为有向边对myId进行 BFS。 - 记录从myId到每个可达用户的最短距离跳数超过maxHop时停止扩展。 - 时间复杂度 O(n m)n 为用户数m 为关注关系数。阶段二交集筛选与排序- 对每个可达用户不含自己计算与myId的兴趣交集。 - 交集非空时按(距离, 用户ID整数)升序排列结果每行内兴趣按 ASCII 升序排列。 - 若无满足条件的用户返回空数组。复杂度分析时间复杂度: O(n m n × avg_interests)其中 avg_interests 为平均兴趣数最多 10。空间复杂度: O(n m)邻接表和