社交网络相同爱好好友查询
2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
在一个社交网络中,用户之间通过"关注"关系形成有向图。每个用户有两个属性:
- 用户 ID(整数字符串)
- 兴趣标签列表(字符串数组)
现在需要实现一个函数,查询在指定用户 k 跳内(k 度关系内)其他用户的兴趣和给定用户兴趣相符的用户 ID 列表(不含自己)。
注意:兴趣相符是指两个用户的兴趣列表有交集。
实现函数:queryFriends(nodes,relations,myId,maxHop)
输入描述
-
nodes - 用户节点数据
- 类型:字符串二维数组/向量
- 每行表示一个用户,包含:
[id, 兴趣1, 兴趣2, ...] - 示例:
["0", "music", "reading"]表示用户 0,有 2 个兴趣:music 和 reading - 所有用户 ID 是 0 到 n-1 的连续整数对应的字符串
-
relations - 关注关系
- 类型:字符串二维数组/向量
- 每行表示一个关注关系:
[关注者ID, 被关注者ID] - 示例:
["0", "1"]表示用户 0 关注了用户 1
-
myId - 起始用户 ID,示例:“0”
-
maxHop - 最大跳数 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
输入
订阅专栏 解锁全文

1278

被折叠的 条评论
为什么被折叠?



