当前位置: 首页 > news >正文

力扣1264-页面推荐

朋友关系列表:Friendship

+---------------+---------+ | Column Name | Type | +---------------+---------+ | user1_id | int | | user2_id | int | +---------------+---------+ (user1_id, user2_id) 是这张表具有唯一值的列的组合。 这张表的每一行代表着 user1_id 和 user2_id 之间存在着朋友关系。

喜欢列表:Likes

+-------------+---------+ | Column Name | Type | +-------------+---------+ | user_id | int | | page_id | int | +-------------+---------+ (user_id, page_id) 是这张表具有唯一值的列的组合。 这张表的每一行代表着 user_id 喜欢 page_id。

编写解决方案,向user_id= 1 的用户,推荐其朋友们喜欢的页面。不要推荐该用户已经喜欢的页面。

任意顺序返回结果,其中不应当包含重复项。

返回结果的格式如下例所示。

示例 1:

输入:Friendship table: +----------+----------+ | user1_id | user2_id | +----------+----------+ | 1 | 2 | | 1 | 3 | | 1 | 4 | | 2 | 3 | | 2 | 4 | | 2 | 5 | | 6 | 1 | +----------+----------+ Likes table: +---------+---------+ | user_id | page_id | +---------+---------+ | 1 | 88 | | 2 | 23 | | 3 | 24 | | 4 | 56 | | 5 | 11 | | 6 | 33 | | 2 | 77 | | 3 | 77 | | 6 | 88 | +---------+---------+输出:+------------------+ | recommended_page | +------------------+ | 23 | | 24 | | 56 | | 33 | | 77 | +------------------+解释:用户1 同 用户2, 3, 4, 6 是朋友关系。 推荐页面为: 页面23 来自于 用户2, 页面24 来自于 用户3, 页面56 来自于 用户3 以及 页面33 来自于 用户6。 页面77 同时被 用户2 和 用户3 推荐。 页面88 没有被推荐,因为 用户1 已经喜欢了它。

思路:

1、先从 Friendship 表中查出用户 1 的所有朋友。
由于好友关系可能出现在 user1_id 或 user2_id 中,因此分别查询两种情况并合并结果。

2、在 Likes 表中,根据上一步得到的好友 ID,查找这些朋友点赞过的页面。

3、排除用户 1 自己已经点赞过的页面,确保推荐结果符合题意。

4、对最终结果进行去重,避免同一个页面重复出现。

select distinct l.page_id as recommended_page from likes l where l.user_id in ( select f.user1_id from friendship f where f.user2_id = 1 union all select f.user2_id from friendship f where f.user1_id = 1 ) and l.page_id not in ( select page_id from likes where user_id = 1 );
http://www.jsqmd.com/news/89083/

相关文章:

  • 抖音uid匹配电话
  • Springboot连锁火锅店餐饮管理系统h2dg0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • [SWPUCTF 2018]SimplePHP
  • Flutter 多端落地实战:Web 与桌面应用的性能优化、SEO 与用户体验全攻略
  • 系统启动和DNS
  • Springboot连锁家政保洁管理系统03zmn(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Flutter 测试全栈指南:从单元测试到黄金路径验证的工程化实践
  • 本凡码农引领杭州小程序开发解决方案赋能企业创新与发展
  • FlutterOpenHarmony商城App标签选择组件开发
  • Springboot连锁药店进销存业务系统98i85(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 前端与数据库交互
  • 《CAPL脚本实现CANOE工具 Bus-Off自动恢复(含重试机制)》
  • OP-TEE HelloWorld 文件保护实战:把一份 `helloworld.txt` 交给 Secure World 保管(EKB → PTA → CA)
  • download https://apkpure.com/cn/
  • web3作业
  • 基于MATLAB的SIFT特征汽车车标识别系统
  • Windows系统文件wdi.dll缺失或损坏问题 下载修复
  • 智能弹性伸缩算法在测试环境中的实践与验证
  • 掌握 Open Graph 协议:让你的网页在社交媒体上大放异彩
  • 微信小程序_WXML
  • Flink学习笔记:如何做容错
  • Windows11系统文件wer.dll丢失或损坏问题 下载修复
  • ​三天搞定企业招聘系统----|---附完整源码
  • 多云测试的智能调度方案
  • 光伏发电+boost+储能+双向dcdc+并网逆变器控制参考资料 光伏发电+boost+储能+...
  • 基于风险演进的智能测试策略设计
  • OOP题目集 4~5 及 课堂测验总结性 Blog
  • Windows系统文件werui.dll缺少或损坏 下载修复
  • 评价页岩油是否值得开采的指标有哪些
  • 能耗黑洞无处遁形!能源管理系统核心功能剖析【带源码】