news 2026/5/5 6:39:47

力扣1747-应该被禁止的Leetflex帐户

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣1747-应该被禁止的Leetflex帐户

表:LogInfo

+-------------+----------+ | Column Name | Type | +-------------+----------+ | account_id | int | | ip_address | int | | login | datetime | | logout | datetime | +-------------+----------+ 该表可能包含重复项。 该表包含有关Leetflex帐户的登录和注销日期的信息。 它还包含了该账户用于登录和注销的网络地址的信息。 题目确保每一个注销时间都在登录时间之后。

编写解决方案,查找那些应该被禁止的Leetflex帐户编号account_id。 如果某个帐户在某一时刻从两个不同的网络地址登录了,则这个帐户应该被禁止。

可以以任何顺序返回结果。

查询结果格式如下例所示。

示例 1:

输入:LogInfo table: +------------+------------+---------------------+---------------------+ | account_id | ip_address | login | logout | +------------+------------+---------------------+---------------------+ | 1 | 1 | 2021-02-01 09:00:00 | 2021-02-01 09:30:00 | | 1 | 2 | 2021-02-01 08:00:00 | 2021-02-01 11:30:00 | | 2 | 6 | 2021-02-01 20:30:00 | 2021-02-01 22:00:00 | | 2 | 7 | 2021-02-02 20:30:00 | 2021-02-02 22:00:00 | | 3 | 9 | 2021-02-01 16:00:00 | 2021-02-01 16:59:59 | | 3 | 13 | 2021-02-01 17:00:00 | 2021-02-01 17:59:59 | | 4 | 10 | 2021-02-01 16:00:00 | 2021-02-01 17:00:00 | | 4 | 11 | 2021-02-01 17:00:00 | 2021-02-01 17:59:59 | +------------+------------+---------------------+---------------------+输出:+------------+ | account_id | +------------+ | 1 | | 4 | +------------+解释:Account ID 1 --> 该账户从 "2021-02-01 09:00:00" 到 "2021-02-01 09:30:00" 在两个不同的网络地址(1 and 2)上激活了。它应该被禁止. Account ID 2 --> 该账户在两个不同的网络地址 (6, 7) 激活了,但在不同的时间上. Account ID 3 --> 该账户在两个不同的网络地址 (9, 13) 激活了,虽然是同一天,但时间上没有交集. Account ID 4 --> 该账户从 "2021-02-01 17:00:00" 到 "2021-02-01 17:00:00" 在两个不同的网络地址 (10 and 11)上激活了。它应该被禁止.

思路:

1、使用同一张日志表进行自连接
题目需要判断同一个账号是否在不同 IP 地址下存在登录时间重叠的情况,因此对登录日志表进行自连接,将其分别作为两份数据进行比较。

2、限定为同一账号的登录记录
在自连接条件中,首先要求两条日志记录属于同一个账号,这样才能判断该账号在不同时间段、不同 IP 下的登录行为是否存在冲突。

3、筛选不同 IP 地址的登录行为
通过比较两条日志记录的 IP 地址,排除同一 IP 的情况,只保留在不同 IP 地址下发生的登录记录,以满足题目对异常登录的判定要求。

4、判断登录时间是否存在重叠
通过比较两次登录的登录时间和登出时间,判断两个时间区间是否存在交集。如果一条记录的登出时间晚于或等于另一条记录的登录时间,且另一条记录的登录时间早于或等于前一条记录的登出时间,则说明登录时间发生了重叠。

5、去重并输出账号结果
最后只返回满足上述条件的账号编号,并通过去重处理,确保每个账号在结果中只出现一次。

代码:

select distinct a.account_id as account_id from LogInfo a, LogInfo b where a.account_id = b.account_id and a.ip_address != b.ip_address and a.logout <= b.logout and b.login <= a.logout
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 22:29:59

Admin.NET通用权限开发框架终极指南:10分钟搭建企业级权限系统

Admin.NET通用权限开发框架终极指南&#xff1a;10分钟搭建企业级权限系统 【免费下载链接】Admin.NET &#x1f525;基于 .NET 6/8 (Furion/SqlSugar) 实现的通用权限开发框架&#xff0c;前端采用 Vue3/Element-plus&#xff0c;代码简洁、易扩展。整合最新技术&#xff0c;模…

作者头像 李华
网站建设 2026/5/1 8:19:03

系统可观测性实战指南:从零到一的完整搭建手册

系统可观测性实战指南&#xff1a;从零到一的完整搭建手册 【免费下载链接】system-design Learn how to design systems at scale and prepare for system design interviews 项目地址: https://gitcode.com/GitHub_Trending/sy/system-design 系统可观测性已成为现代软…

作者头像 李华
网站建设 2026/5/3 16:45:47

37、字符串与数字操作全解析

字符串与数字操作全解析 计算机程序的核心是处理数据。在很多编程问题中,需要使用如字符串和数字这样的小数据单元来解决。本文将介绍一些用于操作字符串和数字的 shell 特性。 1. 参数扩展 参数扩展在脚本编写中十分有用。虽然之前有提及,但未详细介绍。 1.1 基本参数 …

作者头像 李华
网站建设 2026/5/1 11:25:01

Langchain-Chatchat OCR功能集成教程

Langchain-Chatchat OCR功能集成教程 在企业知识管理的实践中&#xff0c;一个常见的困境是&#xff1a;大量关键文档——如历史合同、扫描档案、手写记录或图像型PDF——无法被现有问答系统直接读取。这些“视觉文本”像一座座孤岛&#xff0c;即便内容重要&#xff0c;却因格…

作者头像 李华
网站建设 2026/5/1 9:48:06

GitHub高星项目Kotaemon部署踩坑记录:常见错误与解决方案汇总

GitHub高星项目Kotaemon部署踩坑记录&#xff1a;常见错误与解决方案汇总 在当前大语言模型&#xff08;LLM&#xff09;快速演进的背景下&#xff0c;越来越多企业试图构建具备真实业务能力的智能对话系统。然而&#xff0c;从“能说话”到“可上线”&#xff0c;中间隔着的不…

作者头像 李华
网站建设 2026/5/1 7:19:38

Avizo:让你的多媒体按键反馈更优雅

Avizo&#xff1a;让你的多媒体按键反馈更优雅 【免费下载链接】avizo A neat notification daemon 项目地址: https://gitcode.com/gh_mirrors/avi/avizo 还在为按下音量键时看不到直观的反馈而烦恼吗&#xff1f;Avizo正是为此而生的一款轻量级通知守护进程&#xff0…

作者头像 李华