博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-Consecutive numbers
阅读量:6225 次
发布时间:2019-06-21

本文共 1041 字,大约阅读时间需要 3 分钟。

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.


 

思路:

自己没看题解做出来的第一道middle难度的题目,这个题和Rasing Temprature很像,考察的都是一个表中不同元组之间的某些属性的比较

那个easy的题目只要比较连续的两行就好,而这个题目要比较三行

将easy题目的两种解法套用过来,其中一个会超时,及O(2n^2)时间复杂度的那个嵌套选择算法,我分析这种算法之所以超时是因为每一次子select都要遍历整张表来判断where a.Id = c.Id - 2和where a.Id = b.Id-1,而当表的数据非常大的时候,速度就会很慢

第二种AC了的算法,感觉是一种消耗空间节省时间的方法,我们建立了表格之后,只需要遍历一遍就可以得出最后的答案。


AC代码: select distinct a.Num as consecutiveNumsfrom Logs as a,Logs as b,Logs as cwhere a.Id = b.Id - 1 and a.Id = c.Id - 2 and a.Num = b.Num and a.Num = c.Num

 

TLE代码:select distinct a.Num as ConsecutiveNumsfrom Logs as awhere a.Num = (select b.Num from Logs as bwhere a.Id = b.Id -1)anda.Num = (select c.Numfrom Logs as cwhere a.Id = c.Id -2)

 

转载于:https://www.cnblogs.com/immortal-worm/p/5102588.html

你可能感兴趣的文章
360最新产品亮相全球顶级安全产业大会
查看>>
2014 值得关注的信息安全发展趋势
查看>>
2016年互联网行业十大预测:云计算大数据
查看>>
BlackHat2017热点之DefPloreX---大规模网络犯罪取证的机器学习工具
查看>>
你的企业是否有自动补丁管理工具的潜在需求?
查看>>
阿里云异构计算产品家族亮相 覆盖全场景AI和高性能计算需求
查看>>
巴斯夫如何找到清洁餐具的秘密
查看>>
《逻辑与计算机设计基础(原书第5版)》——第1章 1.0数字系统与信息
查看>>
弃2.4GHz!这就是全新Wi-Fi标准802.11ax
查看>>
BDaas “大数据即服务”的时代即将到来?
查看>>
大数据十大核心问题
查看>>
怎样说服管理者为新的网络产品埋单?
查看>>
SSH如何通过公钥连接云服务器
查看>>
索尼影业就是被这两款工具黑的
查看>>
我想对所有新程序员说的一些话
查看>>
在终端中优雅地编写Python
查看>>
盘点56个最实用的大数据可视化分析工具
查看>>
福布斯评出最热门的 10 大 AI 技术,以及面临的问题
查看>>
2017年成为Linux专家的4个热门技能
查看>>
骑车 or 开车,一个钥匙架想通过暗示改变你的生活习惯
查看>>