牛客网刷题笔记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
相关推荐
虹科网络安全36 分钟前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(下)
数据库·redis·bootstrap
Irene19912 小时前
SQL示例:为什么同样的条件需要重复两次排序
sql
有味道的男人2 小时前
对接亚马逊平台接口,商品全量信息一键抓取
数据库
云原生指北2 小时前
你的数据正在喂养 AI:从 Atlassian 公告,看科技平台的数据训练默认政策
笔记
Web极客码2 小时前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库
**蓝桉**2 小时前
容器服务学习笔记
笔记·学习
逻辑驱动的ken3 小时前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
qq_392690663 小时前
Redis怎样应对Redis集群整体宕机带来的雪崩
jvm·数据库·python
zhangrelay3 小时前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
木木_王4 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习