1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

把用户和关注关系看成一张有向图。关系 [a,b] 表示从用户 a 可以沿一条有向边到达用户 b。

需要查询从 myId 出发,最短距离不超过 maxHop 的用户,并筛选出与 myId 至少有一个共同兴趣的用户。

处理步骤如下:

  1. 先用 nodes 建立用户到兴趣集合的映射。

P14375.社交网络相同爱好好友查询(200分)

    1000ms Tried: 15 Accepted: 2 Difficulty: 6 所属公司 : 华为od
    算法与标签>BFS

题目内容

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

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

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

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

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

输入参数

  1. nodesnodesnodes - 用户节点数据
    • 类型:整数二维数组/向量
    • 每行表示一个用户,包含:[ididid, 兴趣111, 兴趣222, ...]
    • 示例:["000", "musicmusicmusic", "readingreadingreading"] 表示用户 000,有 222 个兴趣:musicmusicmusic 和 readingreadingreading
    • 所有用户 IDIDID 是 000 到 n−1n-1n−1 的连续整数对应的字符串
  2. relationsrelationsrelations - 关注关系
    • 类型:整数二维数组/向量
    • 每行表示一个关注关系:[关注者IDIDID, 被关注者IDIDID]
    • 示例:["000", "111"] 表示用户 000 关注了用户 111
  3. myIdmyIdmyId - 起始用户 IDIDID,示例:"000"
  4. maxHopmaxHopmaxHop - 最大跳数 kkk,示例:222

返回值

  • 内容:所有满足条件的用户 IDIDID 及共同的兴趣列表,如[["000", "musicmusicmusic", "readingreadingreading"],["111", "readingreadingreading"]]

  • 格式 111:不同用户之间按以下规则排序:

    按与起始用户的最短距离从小到大排序

    距离相同的用户,按ID对应整数值进行从小到大排序

  • 格式 222:对于具体某用户与起始用户的共同兴趣列表按以下规则排序: 按照 asciiasciiascii 码序从小到大排序

  • 如果没有满足条件的用户,返回空数组

约束条件

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

样例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"]]

说明

从 ID=ID=ID="000" 出发兴趣相同(333 跳内)可以匹配到用户"111"、"222"、"333",同时用户"111"、"333"跳数少,因此用户"111"、"333"在用户"222"之前。,又因为"111"相比于"333"整数序靠前,因此用户"111"在用户"333"。用户"333"中,匹配到了多项爱好,根据字母序排列,"musicmusicmusic"在"sportssportssports"之前。

样例2

输入

[["0","music"],["1","music"],["2","music"],["3", "music"],["4","music"]],[["0","1"],["1","2"],["2","3"],["3","4"]],"0",1

输出

[["1","music"]]

说明

所有用户都满足兴趣条件,但是跳数限制在 111 跳内,因此仅用户"111"满足条件

样例3

输入

[["0","music"]],[],"0",2

输出

[]

说明

不存在满足条件的结果,返回空数组

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 45ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?