# Write your MySQL query statement below
619. 只出现一次的最大数字
MyNumbers
表:
+-------------+------+ | Column Name | Type | +-------------+------+ | num | int | +-------------+------+ 这张表没有主键。可能包含重复数字。 这张表的每一行都含有一个整数。
单一数字 是在 MyNumbers
表中只出现一次的数字。
请你编写一个 SQL 查询来报告最大的 单一数字 。如果不存在 单一数字 ,查询需报告 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 。
原站题解
pythondata 解法, 执行用时: 388 ms, 内存消耗: 59.8 MB, 提交时间: 2023-09-17 10:46:52
import pandas as pd ''' 1. 去重复 2. 选取最大值 3. 注意去重后df为空 ''' def biggest_single_number(my_numbers: pd.DataFrame) -> pd.DataFrame: try: df = my_numbers.sort_values('num', ascending=False).drop_duplicates(subset=['num'], keep=False) return pd.DataFrame({'num':[df.iat[0, 0]]}) except: return pd.DataFrame({'num':[None]}) # 统计数字出现次数再筛选 def biggest_single_number2(my_numbers: pd.DataFrame) -> pd.DataFrame: df = my_numbers.groupby("num").size().reset_index(name='cnt') # df = my_numbers["num"].value_counts().reset_index(name='cnt') df = df[df["cnt"]==1] return pd.DataFrame({"num":[df["num"].max()]}) def biggest_single_number3(my_numbers: pd.DataFrame) -> pd.DataFrame: ans = my_numbers.drop_duplicates(keep=False).sort_values('num',ascending=False).head(1) if ans.shape[0] == 0: ans.loc[0] = {'num':None} return ans
mysql 解法, 执行用时: 241 ms, 内存消耗: 0 B, 提交时间: 2023-04-02 11:52:50
# Write your MySQL query statement below SELECT MAX(num) AS num FROM (SELECT num FROM MyNumbers GROUP BY num HAVING COUNT(num) = 1) AS t ;