LeetCode(数据库)- 连续出现的数字

简介: LeetCode(数据库)- 连续出现的数字

题目链接:点击打开链接

 

题目大意:略。

 

解题思路:


  • 解决方案(1):自定义变量,这里有个小技巧,写变量表达式的时候,不要写在一行,把从左到右转换成从上到下的顺序来看会比较好理解;"IF(@n=num, NULL, @cnt:=1)" 这一句比较关键,这里的 NULL 是真的为了满足表达式而已,没啥卵用,主要是为了不相等的时候初始化数据罢了
  • 解决方案(2):自连接,"l1.Id = l2.Id - 1 AND l2.Id = l3.Id - 1" 估计这一句比较难理解,意思是 "l1.Id + 1 = l2.Id AND l2.Id + 1 = l3.Id" 这样看是不是小伙伴恍然大悟了呢~


AC 代码

--解决方案(1)
SELECTDISTINCTrs.numASConsecutiveNumsFROM (SELECTnum, 
IF(@n=num, NULL, @cnt:=1), 
@cnt:=IF(@n=num, @cnt+1, @cnt) AS`cnt`, 
@n:=numFROMLogs, (SELECT@cnt:=1, @n:=NULL) init) rsWHERErs.cnt>=3--解决方案(2)
SELECTDISTINCTl1.NumASConsecutiveNumsFROMLogsl1,
Logsl2,
Logsl3WHEREl1.Id=l2.Id-1ANDl2.Id=l3.Id-1ANDl1.Num=l2.NumANDl2.Num=l3.Num;
目录
相关文章
|
JavaScript
JS 刷 Leetcode:268. 丢失的数字
JS 刷 Leetcode:268. 丢失的数字
JS 刷 Leetcode:268. 丢失的数字
|
JavaScript 算法 搜索推荐
JS 刷 Leetcode:136.只出现一次的数字
JS 刷 Leetcode:136.只出现一次的数字
JS 刷 Leetcode:136.只出现一次的数字
|
C++ Python
约瑟夫环——公式法——附LeetCode—剑指offer题目—剑指 Offer 62. 圆圈中最后剩下的数字
约瑟夫环——公式法——附LeetCode—剑指offer题目—剑指 Offer 62. 圆圈中最后剩下的数字
约瑟夫环——公式法——附LeetCode—剑指offer题目—剑指 Offer 62. 圆圈中最后剩下的数字
|
存储 前端开发 算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
151 0
|
算法 PHP
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
143 0
|
算法 PHP
力扣(LeetCode)算法题解:1323. 6 和 9 组成的最大数字
力扣(LeetCode)算法题解:1323. 6 和 9 组成的最大数字
143 0
|
算法 PHP
力扣(LeetCode)算法题解:1295. 统计位数为偶数的数字
力扣(LeetCode)算法题解:1295. 统计位数为偶数的数字
121 0
LeetCode Contest 178-1365. 有多少小于当前数字的数字 How Many Numbers Are Smaller Than the Current Number
LeetCode Contest 178-1365. 有多少小于当前数字的数字 How Many Numbers Are Smaller Than the Current Number
LeetCode 136. 只出现一次的数字 Single Number
LeetCode 136. 只出现一次的数字 Single Number
LeetCode 1342. 将数字变成 0 的操作次数 Number of Steps to Reduce a Number to Zero
LeetCode 1342. 将数字变成 0 的操作次数 Number of Steps to Reduce a Number to Zero