牛客网刷题笔记231112 最小k位数+二叉树层序遍历+SQL异常邮件概率

算法题牛客网NC119 最小的k个数

题目:

用了一下python列表的便利,不知道在面试时允许用不。当然最简单的方法其实是直接sort()一下取前k位数即可。本次写的思路如下:

用一个最大容量为k的列表存储结果,遍历n个元素,当列表超过k位时,弹出最大值。

代码:

python 复制代码
class Solution:
    def GetLeastNumbers_Solution(self , input: List[int], k: int) -> List[int]:
        # write code here
        if k == 0:
            return []
        if k >= len(input):
            return input
        ## 直接sort()
        # input.sort()
        # return input[:k]
        
        ## 堆排序
        max_output = input[0]
        output = [max_output]
        for i in input[1:]:
            if len(output) < k:
                output.append(i)
                if i > max_output:
                    max_output = i
            else:
                if i < max_output:
                    output.remove(max_output)
                    output.append(i)
                    max_output = max(output)
        return output

算法题牛客网NC15 二叉树层序遍历

题目:

这个题目其实还挺普遍的,简单点说就是要做一次遍历,最直接的想法是用队列的思想。不过自己比较习惯用列表,所以是用列表实现队列的想法。

代码:

python 复制代码
class Solution:
    def levelOrder(self , root: TreeNode) -> List[List[int]]:
        # write code here
        if not root:
            return []
        if not root.left and not root.right:
            return [[root.val]]
        
        nodeList = [root] # 作为队列记录节点
        result = []
        while len(nodeList)>0:
            curRow = [] # 记录当前遍历行的结点
            n = len(nodeList)
            for i in range(n):
                cur = nodeList.pop(0) ## 弹出节点
                curRow.append(cur.val)
                ## 加入子节点
                if cur.left:
                    nodeList.append(cur.left)
                if cur.right:
                    nodeList.append(cur.right)
            result.append(curRow)
        return result

SQL牛客网259 异常的邮件概率

依旧写了两个,题库太少了没什么难度。题目太长放链接

异常的邮件概率

代码:

sql 复制代码
select date, format(count(case when type = 'no_completed' then 1 else null end)/count(1), 3) as p
from (
    select *
    from email
    where send_id in (select id from user where is_blacklist = 0) 
    and receive_id in (select id from user where is_blacklist = 0)
) a
group by date
order by date asc
相关推荐
IvorySQL4 小时前
IvorySQL 5.6 发布:PG 18.6 内核升级,沙盒即开即用
数据库·人工智能·postgresql
zjxtxdy4 小时前
SPI通信协议
笔记·单片机
bbq粉刷匠5 小时前
触发器(下):事务与锁、binlog 一致性与替代方案
sql
CNSSIRD数据库5 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
fd32006 小时前
达梦数据库更新统计信息后仍走旧执行计划解决方案
数据库
彧azz6 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
华章酱6 小时前
MySQL幻读是怎么出现的
数据库·mysql·幻读
浅念-7 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
updayday8547 小时前
离职域账号状态变更与Ping64操作记录核对
大数据·网络·数据库·安全·智能路由器
aramae7 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他