Leetcode题解
文章平均质量分 86
从考察知识点、解题思路、解法、最优解几个方面来记录对Leetcode的题解过程
小白掌柜
Atypical programmer
展开
-
Leetcode题解之database(十四)584.寻找用户推荐人 - 你应该知道的五种MySQL解法
力扣584题的五种MySQL解法原创 2023-04-13 19:15:00 · 936 阅读 · 0 评论 -
Leetcode题解之database(十三)1777. Product‘s Price for Each Store
从今天开始解锁 力扣《数据库》的VIP题目,还是按照由易到难来题解。今天要看的就是第 1777题????Product’s Price for Each Store(每家商店的产品价格)。此题主要考察知识点: 三个字???? 行转列! 具体到方法就是 CASE WHEN / IF 和 聚合函数(SUM、MAX等)的使用。解题思路????:由上图题目的示例Products 表和Result 表可很明显的看出来,Products表的store 列值变到了 Result表的不同行,这就是很典型的 行转原创 2021-04-20 20:12:36 · 524 阅读 · 0 评论 -
Leetcode题解之database(十二)607. Sales Person
此题确实简单,解题思路:找到不属于RED公司的员工id,就可以找到对应的员工name。但是一开始掌柜进入了一个思维的误区:以为只要是com_id = 1 的公司就是’RED’公司。。。于是提交了如下查询语句就华丽丽的出错了!其实实际测试案例中会有 com_id = 2的公司才是RED公司情况。。。所以这里的筛选条件应该是公司的名字即 name = ‘RED’ 才对!!!(看了一下评论区也有好些跟掌柜一样进入误区的????)但是你看 order 表里面没有name这个字段,因此需要先原创 2021-01-27 18:58:29 · 413 阅读 · 0 评论 -
Leetcode题解之database(十一)512. Game Play Analysis II
掌柜又回来了????今日带来????512. Game Play Analysis II (游戏分析Ⅱ)的题解。首先看题目:解题思路????: 此题要求的是每个玩家第一次登录日期的玩家ID 和他的设备ID。 那么我们首先要知道 每个玩家第一次登录的日期(其实就是511题:游戏分析Ⅰ) 是什么时候???接着用前面每个玩家的日期作为筛选条件进行查询就能得到相应的玩家ID 和 设备ID。思路还是比较简单的,下面提供几个参考的解法????:第一个解法:子查询和聚合函数。SELECT play原创 2021-01-26 20:16:33 · 292 阅读 · 0 评论 -
由一道牛客SQL题引发关于NOT IN 函数、MAX函数、MIN函数的思考
又是随手刷到一道牛客SQL题,这次是????查找排除最大、最小salary之后的当前(to_date = ‘9999-01-01’ )员工的平均工资avg_salary。此题其实不算难,一开始掌柜想到的解题思路如下:????首先找到最大最小工资,然后剔除这个数值;接下来筛选当前日期为’9999-01-01’ 的平均工资数据即可。但是这题其实又有点坑????,因为题意并没有明显说????要你在剔除最大最小工资那里也是筛选当前日期为’9999-01-01’ !!! 这个条件,所以如果你一开始没有get到原创 2020-11-26 21:16:30 · 727 阅读 · 6 评论 -
Leetcode题解之database(十)177. Nth Highest Salary
今天要解的是:177. Nth Highest Salary(求第N高的工资)。这里要注意这样一句话????:如果没有第N高的工资,就要输出NULL。首先看此题考察的知识点:IFNULL(判断空值)函数用法和LIMIT用法。其实这题可以说是???? 176. Second Highest Salary (求第二高工资) 的升级版。建议大家先看看第二高的题解会更易懂这题。解题思路????:此题要求第N高,那么重点就在N这个数字上。第一种情况,N不为0的时候:假如N=1,那就是第一高,原创 2020-11-12 20:50:10 · 368 阅读 · 0 评论 -
牛客SQL实战的18道简单题+Leetcode非VIP的12道简单题 总结
随手刷过力扣数据库题和牛客的SQL实战题,今天就对两边的简单题做个总结,让我们一起来看看对于SQL简单题常考的有哪些知识点以及题型吧。PS:如果分类区有漏掉的题,欢迎评论区补充,谢谢!常考知识点一:两表或多表连接,即????考察JOIN 、LEFT JOIN、RIGHT JOIN、INNER JOIN 的用法和区别。题型有:(PPS: 下面提到的题都是其中一种解法会用到这个知识点;此题也有其他解法可用 )Leetcode ???? 175. 组合两表Leetcode ???? 181.原创 2020-11-04 19:04:43 · 404 阅读 · 0 评论 -
由一道简单的Leetcode题 “620. 有趣的电影 ”发现了一个有趣的东西 -- “位运算中的按位与运算”
今天掌柜随手翻了一道Leetcode的题来练手,对,就是上面的620这道题????找出有趣的电影 。这道题确实很简单,筛选数据的条件就三个,一个是判断description 不是boring;另一个就是id必须是奇数;最后还要按评分降幂排列。具体的题目和解法掌柜就不贴出来了,大家可以去leetcode官网查看。掌柜在自己提交了解法后会习惯性地去看别人的解法,想看看有没有更优解。于是就意外的发现一个高票的答案里面使用了标题里面的????位运算。于是就随手一搜,发现这是个很有趣的东西,打算这里多聊几句,原创 2020-05-15 20:14:53 · 2412 阅读 · 1 评论 -
浅谈627. Swap Salary(交换工资)的题解区中的 位运算之 “异或运算”(一)
之前解析完Leetcode最后一道非VIP的SQL题 ????交换工资。其中最有意思的是有个解法使用了 “异或运算”,于是今天打算浅谈一下这个高效的方法。首先,什么是位运算的“异或运算”?其实这个运算全称是 “按位异或(英文叫eXclusive OR,简称 XOR)”,看过掌柜之前这篇博客的朋友应该都知道之前掌柜谈了位运算的按位与(&)运算。其实它还有另外几种(按位或(|)、按位取反(~)、左移运算 (<<)以及右移运算(>>)),还没遇到类似案例就暂不提,今天主要原创 2020-10-24 23:00:18 · 453 阅读 · 0 评论 -
Leetcode题解之database(九)627. Swap Salary
今天终于把最后一道普通用户可解的数据库简单题刷了,????627. 交换工资(评论里说应该叫交换性别??????)。此题确实简单,不过要注意题目里面有这样一条要求:黑色加粗字体写明了:只能是单个更新语句且不能用select方法!!!所以此题其实考察的知识点????:UPDATE函数以及CASE WHEN函数的用法!下面来看解题思路:首先看题目要求,是要把sex这一列的f 和m 值进行互换,来达到交换工资的目的;那么就要对数据表进行一个更新,所以第一个要用函数就是UPDATE …SET … 方法原创 2020-10-14 19:06:22 · 1825 阅读 · 9 评论 -
Leetcode题解之database(八)595. Big Countries -- 浅谈选择Union还是OR
掌柜又随手刷了一道力扣数据库题,这次是595题????:找大国。相信很多朋友都见过这个题,这题确实很简单,只要你SQL基础过关。所以掌柜就简单提一下,此题主要考察知识点就是SQL中多条件的过滤。但是掌柜一如既往在自己解答后看其他人的题解时,发现了一个有趣的东西 – 就是大多数题解都写到????:这里使用Union连接两个查询语句的效率会优于使用OR方法???真的是这样的吗???????掌柜持怀疑态度❗--------------------------------------------------原创 2020-07-14 20:57:47 · 209 阅读 · 0 评论 -
Leetcode题解之database(七)1179. Reformat Department Table
今天又随手刷了一道力扣题,还是数据库的。这次是 1179题:重写部门表格。又是一道看似简单的题,但不注意还是容易出错????。此题主要考察的知识点????:CASE WHEN/IF 函数的用法以及SQL分组聚合的方法。解题思路????:仔细看题目这里的要求要求表格以 部门id和每个月的收入 这样的形式来显示,如上。那么问题来了,第一个:如何统计有哪些部门id?第二个:如何统计每个月该部门id的收入?首先第一个问题很好解决,想要统计表格有哪些部门id,很自然就会想到用GROUP BY方法;原创 2020-06-18 18:52:05 · 2511 阅读 · 4 评论 -
从一道简单的Leetcode 197题 “上升的温度” 看INNER JOIN、CROSS JOIN 和 , (comma 逗号) 连接两表/多表的区别
今天又随手刷了一道Leetcode的197题,此题难点主要在于比较两个日期值 DATEDIFF() 函数的使用,如果你很熟悉这个函数,那么这题对你来说就很简单了!不过掌柜在解完此题后习惯性地看看别人的解法,因为总有厉害的朋友在下面给出惊喜????。于是又发现了一个细小的点:即使用INNER JOIN(或JOIN)、CROSS JOIN和使用逗号(,)来连接两表/多表到底有什么区别?又开始翻阅查询,在MySQL 8.0的官网看到这么一段话:翻译一下这里(如果有错误,请谅解并提出来):INNER JO原创 2020-06-08 19:55:09 · 2214 阅读 · 0 评论 -
Leetcode题解之database(五)176. Second Highest Salary
今天又随手刷了一道leetcode的数据库题,这次是????:176. Second Highest Salary 求第二高工资。乍看这题是不是觉得似曾相识?没错,之前掌柜写过另外两个题,分别是求部门最高工资的员工 和 求部门工资排前三的员工。其实那两题还稍微难点,因为涉及多表联合查询的;不过这道题看似简单些,里面却有两个坑需要注意避开!!!掌柜一开始就没注意到,导致提交就报错????。。。上面这个错误❌的解法就是疏忽了第二个坑导致的,下面掌柜马上填坑????。第一个坑就是有可能会出现工资有重复的原创 2020-05-18 19:39:22 · 294 阅读 · 0 评论 -
Leetcode题解之database(四)185. Department Top Three Salaries
今天要解的题目是????:185. Department Top Three Salaries(部门工资排前三的员工)这题考察的知识点????:两表连接JOIN的使用以及子查询此题思路一????:既然要查部门工资排前三,那么我们要知道有哪些部门?这里就要使用JOIN连接两表得到各个部门信息,然后再在各部门中降幂排列出工资排前三的员工信息,这里就要用到子查询建立一个新表来跟原始表进行对比。(这也是官方的解法思路)...原创 2020-03-31 19:08:06 · 284 阅读 · 0 评论 -
Leetcode题解之database(三)196. Delete Duplicate Emails
今天要解的题目是????:196. Delete Duplicate Emails(删除重复的邮件)乍看之下会觉得是个很简单的去重问题,但是请仔细注意题目的要求:题目要求的是删除重复的数据,并保留Id最小的邮箱数据!!!所以如果一开始想用DISTINCT函数是不对的,因为它只是在查询的时候去掉了重复的数据不显示,但是并没有删除该数据。。。此题考察知识点????:Delete函数和Where条件查询的使...原创 2020-03-22 00:04:04 · 1612 阅读 · 0 评论 -
Leetcode题解之database(二)184. Department Highest Salary
今天要解的是184题:部门最高工资的员工。题目链接在这里:???? 184. Department Highest Salary首先看这题要考察的知识点:????再看这题的思路: 要找的是部门最高员工,那么有两种思路????:...原创 2020-03-20 18:33:57 · 341 阅读 · 0 评论 -
Leetcode题解之database(一)183. Customers Who Never Order
从今天开始每天都记录解一道Leetcode数据库的题,把它所使用的方法、思路、考察知识点以及最优解写下来。废话不多说,今天要解的是183题:没有下单的客户名字。题目链接在这里:???? Customers Who Never Order首先看这题要考察的知识点:...原创 2020-03-18 18:12:07 · 288 阅读 · 0 评论