5.13华为OD机试真题 新系统 - 社交网络相同爱好好友查询 (Java/Py/C/C++/Js/Go)

社交网络相同爱好好友查询

2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

在一个社交网络中,用户之间通过"关注"关系形成有向图。每个用户有两个属性:

  • 用户 ID(整数字符串)
  • 兴趣标签列表(字符串数组)

现在需要实现一个函数,查询在指定用户 k 跳内(k 度关系内)其他用户的兴趣和给定用户兴趣相符的用户 ID 列表(不含自己)。

注意:兴趣相符是指两个用户的兴趣列表有交集。

实现函数:queryFriends(nodes,relations,myId,maxHop)

输入描述

  1. nodes - 用户节点数据

    • 类型:字符串二维数组/向量
    • 每行表示一个用户,包含:[id, 兴趣1, 兴趣2, ...]
    • 示例:["0", "music", "reading"] 表示用户 0,有 2 个兴趣:music 和 reading
    • 所有用户 ID 是 0 到 n-1 的连续整数对应的字符串
  2. relations - 关注关系

    • 类型:字符串二维数组/向量
    • 每行表示一个关注关系:[关注者ID, 被关注者ID]
    • 示例:["0", "1"] 表示用户 0 关注了用户 1
  3. myId - 起始用户 ID,示例:“0”

  4. 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 码序从小到大排序
  • 如果没有满足条件的用户,返回空数组 []

约束条件

  1. 用户数 n: 1≤n≤10^4,可认为用户的 id 字符串对应整数范围符合该条件
  2. 关注关系数 m: 0≤m≤2×10^4,若关系任一端包含不存在的点应该自动忽略,不影响原始查询诉求
  3. 最大跳数 k: 1≤k≤100,大于最大跳数,按照上限 100 对待
  4. 每个用户最多 10 个兴趣标签,可认为所有用户的兴趣个数符合该条件
  5. 给定查询条件中的起始用户 ID 一定存在

示例1

输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值