• 619. 只出现一次的最大数字


    说在前面

    🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

    题目描述

    MyNumbers 表:

    +-------------+------+
    | Column Name | Type |
    +-------------+------+
    | num         | int  |
    +-------------+------+
    该表可能包含重复项(换句话说,在SQL中,该表没有主键)。
    这张表的每一行都含有一个整数。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    单一数字 是在 MyNumbers 表中只出现一次的数字。

    找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null 。

    查询结果如下例所示。

    示例 1:

    输入:
    MyNumbers 表:
    +-----+
    | num |
    +-----+
    | 8   |
    | 8   |
    | 3   |
    | 3   |
    | 1   |
    | 4   |
    | 5   |
    | 6   |
    +-----+
    输出:
    +-----+
    | num |
    +-----+
    | 6   |
    +-----+
    解释: 单一数字有 1、4、5 和 6 。
    6 是最大的单一数字,返回 6 。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    示例 2:

    输入:
    MyNumbers table:
    +-----+
    | num |
    +-----+
    | 8   |
    | 8   |
    | 7   |
    | 7   |
    | 3   |
    | 3   |
    | 3   |
    +-----+
    输出:
    +------+
    | num  |
    +------+
    | null |
    +------+
    解释: 输入的表中不存在单一数字,所以返回 null 。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    解题思路

    • 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)
    
    • 1

    公众号

    关注公众号『前端也能这么有趣』,获取更多有趣内容。

    说在后面

    🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

  • 相关阅读:
    python+pytest接口自动化(10)-session会话保持
    Cadence Allegro如何添加/生成测试点?
    python+selenium进行cnblog的自动化登录测试
    windows下Redis-cluster集群搭建
    【postman】postman的使用与postman汉化
    基于FTP协议的Excel文件上传与下载
    各种大佬写的爬虫相关的框架汇总
    攻防世界WEB练习-easyupload
    机器人控制器编程实践指导书旧版-实践二 传感器(模拟量)
    触觉智能分享-SSD20X Ubuntu 20.04 文件系统的移植
  • 原文地址:https://blog.csdn.net/Twinkle_sone/article/details/136258117