LeetCode——Consecutive Numbers

Write a SQL query to find all numbers that appear at least three times consecutively.+----+-----+| Id | Num |+----+-----+| 1  |  1  || 2  |  1  || 3  |  1  || 4  |  2  || 5  |  1  || 6  |  2  || 7  |  2  |+----+-----+For example, given the above Logs table, 1 is the only number that appears consecutively for at least three times.+-----------------+| ConsecutiveNums |+-----------------+| 1               |+-----------------+

题意:求表中连续出现3次以上的数据.

因此,根据题意构造第一版本答案(使用连续的ID进行比较):

# Write your MySQL query statement belowSELECT DISTINCT t1.Num AS ConsecutiveNums     FROM         Logs t1,        Logs t2,        Logs t3    WHERE         t1.Id = t3.Id - 1        AND t2.Id = t3.Id + 1        AND t1.Num = t2.Num        AND t2.Num = t3.Num;

当前版本答案通过了测试,但是运行效率太低了.
分析原因,可能与t1.Id = t3.Id - 1条件相关,当t3.Id为0时,-1不会寻找到相关数据,导致sql执行缓慢.
因此,修改为如下所示:

# Write your MySQL query statement below# Write your MySQL query statement belowSELECT DISTINCT t1.Num AS ConsecutiveNums     FROM         Logs t1,        Logs t2,        Logs t3    WHERE         t2.Id = t1.Id + 1        AND t3.Id = t1.Id + 2        AND t1.Num = t2.Num        AND t2.Num = t3.Num;

此版本,效率得到了巨大的提高。

PS:
如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!

(0)

相关推荐

  • [MySQL]mysql binlog回滚数据

    [MySQL]mysql binlog回滚数据

  • MySQL的监控原理

    MySQL的监控通过日志文件来实现. 那么MySQL的日志文件有哪些类型呢? MySQL使用以下这几种类型的日志来记录服务器活动信息. Error log错误日志:关于启动.关闭和异常情况的诊断消息( ...

  • LeetCode之Max Consecutive Ones

    LeetCode之Max Consecutive Ones

  • LeetCode之Find All Numbers Disappeared in an Array

    LeetCode之Find All Numbers Disappeared in an Array

  • ​LeetCode刷题实战260:只出现一次的数字 III

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战258:各位相加

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战257:二叉树的所有路径

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战256:粉刷房子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战262:行程和用户

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • leetcode刷题笔记-234. 回文链表(java实现)

    题目描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 来源:力扣(LeetCo ...

  • ​LeetCode刷题实战255:验证前序遍历序列二叉搜索树

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...