news 2026/9/15 9:49:40

力扣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/9/14 13:47:12

Flutter悬浮Header完整实战:快速实现沉浸式滚动体验

想要打造像Instagram、Twitter那样流畅的滚动体验吗&#xff1f;Flutter的悬浮Header效果正是让你的应用脱颖而出的关键&#xff01;通过Flutter-Notebook项目&#xff0c;我们将深入探索如何实现列表滑动时头部自动隐藏和显示的优雅交互&#xff0c;让你的应用瞬间提升专业感。…

作者头像 李华
网站建设 2026/9/14 10:41:34

使用C#调用Kotaemon REST API进行智能对话集成

使用C#调用Kotaemon REST API进行智能对话集成 在企业服务智能化浪潮中&#xff0c;越来越多的组织希望在不重构现有系统的情况下快速引入AI能力。尤其是在客服、知识管理与内部办公自动化场景下&#xff0c;用户不再满足于“关键词匹配”式的机械回复&#xff0c;而是期待真正…

作者头像 李华
网站建设 2026/9/15 11:19:57

DataEase部署教程:从零开始搭建专业数据可视化平台

DataEase部署教程&#xff1a;从零开始搭建专业数据可视化平台 【免费下载链接】dataease DataEase: 是一个开源的数据可视化分析工具&#xff0c;支持多种数据源以及丰富的图表类型。适合数据分析师和数据科学家快速创建数据可视化报表。 项目地址: https://gitcode.com/Git…

作者头像 李华
网站建设 2026/9/14 19:02:32

24、文本处理工具全解析

文本处理工具全解析 1. 引言 在文本处理中,有许多工具除了能接受命令行参数外,还能接受标准输入。接下来,我们将深入探讨这些工具在文本处理中的具体应用。 2. cat 命令 cat 命令有许多有趣的选项,很多选项有助于更好地可视化文本内容。 - 显示非打印字符 :-A 选项…

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

27、文本格式化与打印:从基础工具到专业系统

文本格式化与打印:从基础工具到专业系统 1. 简单格式化工具 1.1 pr - 打印文本格式化 pr 程序用于对文本进行分页处理。在打印文本时,通常希望在输出的页面之间用几行空白分隔,为每页提供上下边距,还可利用这些空白插入页眉和页脚。 以下是使用 pr 格式化 distros.txt …

作者头像 李华
网站建设 2026/9/14 19:34:30

Obsidian与Zotero集成配置完全指南

Obsidian与Zotero集成配置完全指南 【免费下载链接】obsidian-zotero-integration Insert and import citations, bibliographies, notes, and PDF annotations from Zotero into Obsidian. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-zotero-integration 系…

作者头像 李华