本文主要是介绍619. 只出现一次的最大数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说在前面
🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
题目描述
MyNumbers
表:
+-------------+------+
| Column Name | Type |
+-------------+------+
| num | int |
+-------------+------+
该表可能包含重复项(换句话说,在SQL中,该表没有主键)。
这张表的每一行都含有一个整数。
单一数字 是在 MyNumbers
表中只出现一次的数字。
找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null
。
查询结果如下例所示。
示例 1:
输入:
MyNumbers 表:
+-----+
| num |
+-----+
| 8 |
| 8 |
| 3 |
| 3 |
| 1 |
| 4 |
| 5 |
| 6 |
+-----+
输出:
+-----+
| num |
+-----+
| 6 |
+-----+
解释: 单一数字有 1、4、5 和 6 。
6 是最大的单一数字,返回 6 。
示例 2:
输入:
MyNumbers table:
+-----+
| num |
+-----+
| 8 |
| 8 |
| 7 |
| 7 |
| 3 |
| 3 |
| 3 |
+-----+
输出:
+------+
| num |
+------+
| null |
+------+
解释: 输入的表中不存在单一数字,所以返回 null 。
解题思路
-
1、内部查询:首先,内部的 (select num from MyNumbers group by num HAVING COUNT(num) = 1) 部分是一个子查询。它的作用是对 MyNumbers 表中的 num 字段进行分组,并且只选择出现次数为 1 的 num 值。
-
2、外部查询:外部的 select Max(num) num from (…) 部分则是对内部查询结果进行选择,即选择内部查询中得到的仅出现一次的 num 值中的最大值。这里使用了聚合函数 MAX 来计算最大值。
AC代码
select num from (select num from MyNumbers group by num HAVING COUNT(num) = 1)
公众号
关注公众号『前端也能这么有趣
』,获取更多有趣内容。
说在后面
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣
』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。
这篇关于619. 只出现一次的最大数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!