牛客网刷题笔记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
相关推荐
电魂泡哥3 小时前
SQL出现filesort 一定慢吗
数据库·sql
muddjsv5 小时前
大中小型企业数据层配置规模分析与选型指南
数据库
Runawayliquor5 小时前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
yangshicong6 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
玄米乌龙茶1236 小时前
LLM成长笔记(二):数据处理与工具链
笔记
chimchim666 小时前
pg dblink使用查询
数据库
tq10866 小时前
因果本是叙事
笔记
晓梦林6 小时前
Baji1靶场学习笔记
笔记·学习
Java面试题总结6 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
绝知此事7 小时前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树