当前位置: 首页 > news >正文

牛客网刷题笔记131111 Python实现LRU+二叉树先中后序打印+SQL并列排序

从学校步入职场一年多,已经很久没刷过题了,为后续稍微做些提前的准备,还是重新开始刷刷题。
从未做过计划表,这回倒是做了个计划表,希望能坚持吧。
刷题比较随性且量级不大,今天就写了2个算法+2个sql,sql感觉都相对简单且题库没什么好写的,后续考虑将sql的刷题计划改为对理论知识的回温。

算法题牛客网NC93 LRU实现

题目如下:

设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为 capacity ,操作次数是 n ,并有如下功能:
1、Solution(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存
2、get(key):如果关键字 key 存在于缓存中,则返回key对应的value值,否则返回 -1 。
3、set(key, value):将记录(key, value)插入该结构,如果关键字 key 已经存在,则变更其数据值 value,如果不存在,则向缓存中插入该组 key-value ,如果key-value的数量超过capacity,弹出最久未使用的key-value。
要求get跟set的时间复杂度只能为O(1)。

虽然很久没刷题,但好像没有以前那种从未刷过题第一次写不知从何下手的感觉,倒是很顺畅地就写出来了。写完看了一下以往写过的历史记录,发现以前也写过这道题只是题目有所变动,但感觉现在写的更加简洁易懂一些。思路如下:

题目要求写一个LRU的缓存结构,最直接的想法就是用一个字典作为载体,对get与set进行对应的配置:
1、get():每次get操作,如果字典中存在key值,先将value取出后进行删键操作,再重新插入key值进行赋值,同时返回value;若不存在直接返回-1即可。这样子可以保证只要触发get操作,这个key值也会是最近被用过的。
2、set():分为三种情况处理
1)存在key值,与get操作类似,先删键再重新赋值;
2)不存在key值,但字典大小未超过缓存容量要求,这种最简单直接插入新的键值;
3)不存在key值,且字典大小超过缓存容量要求,这种要处理也很容易,取出字典最早,也就是最久没有被用到的键进行删除,可以通过将键值取成列表后取第一个来解决,然后再插入新键值。

代码:

class Solution:def __init__(self, capacity: int):# write code hereself.capacity = capacityself.result = dict()def get(self, key: int) -> int:# write code hereif key in self.result.keys():output = self.result[key]del self.result[key]self.result[key] = outputreturn outputelse:return -1def set(self, key: int, value: int) -> None:# write code hereif key in self.result.keys():## key值存在,移除后重新插入del self.result[key]self.result[key] = valueelif len(self.result.keys()) < self.capacity:## 缓存大小未超过容量的情况下,插入赋值self.result[key] = valueelse:## key值不存在且缓存大小超过容量# self.result.popitem()del_key = list(self.result.keys())[0]del self.result[del_key]self.result[key] = value# print(list(self.result.keys()))# Your Solution object will be instantiated and called as such:
# solution = Solution(capacity)
# output = solution.get(key)
# solution.set(key,value)

算法题牛客网NC45 二叉树先中后序打印

这个题其实写过,题目还是比较简单的,思路就是直接按先序、中序、后序的需求取值即可。题目如下:

给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
数据范围: n ∈ [ 0 , 1000 ] n\in[0,1000] n[0,1000],树上每个节点的val值满足#val\in[0,100]#
要求:空间复杂度O(n),时间复杂度O(n)

代码:

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 the root of binary tree
# @return int整型二维数组
#
class Solution:def threeOrders(self , root: TreeNode) -> List[List[int]]:# write code herepreList = []midList = []lastList = []def preOrder(curNode, leftNode, rightNode):if curNode:preList.append(curNode.val)if leftNode:preOrder(leftNode, leftNode.left, leftNode.right)if rightNode:preOrder(rightNode, rightNode.left, rightNode.right)def midOrder(curNode, leftNode, rightNode):if leftNode:midOrder(leftNode, leftNode.left, leftNode.right)if curNode:midList.append(curNode.val)if rightNode:midOrder(rightNode, rightNode.left, rightNode.right)def lastOrder(curNode, leftNode, rightNode):if leftNode:lastOrder(leftNode, leftNode.left, leftNode.right)if rightNode:lastOrder(rightNode, rightNode.left, rightNode.right)if curNode:lastList.append(curNode.val)if root:preOrder(root, root.left, root.right)midOrder(root, root.left, root.right)lastOrder(root, root.left, root.right)print([preList, midList, lastList])return [preList, midList, lastList]

MYSQL牛客网256 返回三次以上相同积分的情况

题目:

在这里插入图片描述
比较简单,直接groupby即可,稍微注意要按升序排序,所以指定的ASC。代码如下:

select number
from (select number, count(1) as cnt from grade group by number) t1
where cnt >= 3
order by number asc

MYSQL牛客网257 通过的题目排名

题目:

在这里插入图片描述

题目本身不难,这里主要记录下三种排序函数用法row_numberrankdense_rank

  1. row_number(): 不存在并列的情况,用法 row_number() over(partition by xx1 order by xx2 desc/asc) as rnk,假如用在本题,则id为1、6的排名会分别为2、3,不出现并列排名的情况 。
  2. rank(): 存在并列的情况,但并列后的顺序会出现跳过的情况。假如用在本题,则id为1、6的排名均为2,但id为2的排名会为4。
  3. dense_rank(): 存在并列的情况,且并列后的顺序正常排序。即为题目要求的顺序。

这里注意一点,本题只根据number排序,所以不用partition by。代码如下:

select *, dense_rank() over (order by number desc) as t_rank
from passing_number
order by t_rank asc, id asc

相关文章:

牛客网刷题笔记131111 Python实现LRU+二叉树先中后序打印+SQL并列排序

从学校步入职场一年多&#xff0c;已经很久没刷过题了&#xff0c;为后续稍微做些提前的准备&#xff0c;还是重新开始刷刷题。 从未做过计划表&#xff0c;这回倒是做了个计划表&#xff0c;希望能坚持吧。 刷题比较随性且量级不大&#xff0c;今天就写了2个算法2个sql&#x…...

TCP网络编程

一)TCP Socket介绍: 1)TCP和UDP有着很大的不同&#xff0c;TCP想要进行网络通信的话首先需要通信双方建立连接以后然后才可以进行通信&#xff0c;TCP进行网络编程的方式和文件中的读写字节流类似&#xff0c;是以字节为单位的流进行传输 2)针对于TCP的套接字来说&#xff0c;J…...

K8S知识点(九)

&#xff08;1&#xff09;Pod详解-结构和定义 一级属性有下面这些&#xff1a;前两个属性是字符串&#xff0c;上面有定义 kind&#xff1a;Pod version&#xff1a;v1 下面的属性是object 还可以继续查看子属性&#xff1a;二级属性 还可以继续查看三级属性&#xff1a; 通…...

el-table实现单选和隐藏全选框和回显数据

0 效果 1 单选 <el-table ref"clientTableRef" selection-change"clientChangeHandle"><el-table-column fixed type"selection" width"50" align"center" /><el-table-column label"客户名称" a…...

香港科技大学广州|智能制造学域机器人与自主系统学域博士招生宣讲会—中国科学技术大学专场

&#x1f3e0;地点&#xff1a;中国科学技术大学西区学生活动中心&#xff08;一楼&#xff09;报告厅 【宣讲会专场1】让制造更高效、更智能、更可持续—智能制造学域 &#x1f559;时间&#xff1a;2023年11月16日&#xff08;星期四&#xff09;18:00 报名链接&#xff1a…...

[P7885][Android13] 解决5G信号良好状态栏信号只有两格的问题

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: 展锐P7885 版本: Android 13 kernel: kernel-5.15 问题描述 最近有一款预研设备使用的是展锐 P7885 的5G 智能模组&#xff1b;经过天线厂调试天线后&#xff0c;各项指标都达到了标准&#xff0c;正常待…...

老版本goland无法调试新版本go问题处理

背景 无法调试1.20版本b 报错如下&#xff1a; No goroutine selected 懒人不想升级goland版本。 处理方法 1.安装最新的dlv工具 go install github.com/go-delve/delve/cmd/dlvlatest 2.找到刚刚安装的dlv工具&#xff0c;并复制 # 位于$GOPATH的bin目录下&#xff0c;如…...

Redis应用之二分布式锁2

一、前言 前一篇 Redis应用之二分布式锁 我们介绍了使用SETNX来实现分布式锁&#xff0c;并且还遗留了一个Bug&#xff0c;今天我们对代码进行优化&#xff0c;然后介绍一下Redisson以及数据库的乐观锁悲观锁怎么用。 二、SetNX分布式锁优化后代码 RedisService.java Inven…...

打印字符(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...

React函数组件的使用(Hooks)

目录 Hooks概念理解 1. 什么是hooks 2. Hooks解决了什么问题 useState 1. 基础使用 2. 状态的读取和修改 3. 组件的更新过程 4. 使用规则 useEffect 1. 理解函数副作用 2. 基础使用 3. 依赖项控制执行时机 4. 清理副作用 Hooks概念理解 本节任务: 能够理解hooks的…...

一篇博客读懂队列——Queue

目录 一、队列的概念和结构 ​二、队列的实现 2.1队列的初始化QueueInit 2.2队列的摧毁QueueDestroy 2.3插入结点QueuePush 2.4删除结点QueuePop 2.5返回队头QueueFront 2.6返回队尾QueueBack 2.7判断队列为空QueueEmpty 2.8统计队列数目QueueSize 一、队列的概念和…...

Effective C++ 系列和 C++ Core Guidelines 如何选择?

Effective C 系列和 C Core Guidelines 如何选择&#xff1f; 如果一定要二选一&#xff0c;我会选择C Core Guidelines。因为它是开源的&#xff0c;有300多个贡献者&#xff0c;而且还在不断更新&#xff0c;意味着它归纳总结了最新的C实践经验。最近很多小伙伴找我&#xff…...

Sandbox: bash(5613) deny(1) file-write-create 错误解决

Showing Recent Errors Only Sandbox: bash(5613) deny(1) file-write-create /Users/xx/Dev/UniappLearn/MSLUniappDemo/Pods/resources-to-copy-MSLUniappDemo.txt image.png 解决方法 build setting搜索ENABLE_USER_SCRIPT_SANDBOXING&#xff0c;YES&#xff08;默认&…...

腾讯云标准型S5服务器五年优惠价格表(4核8G和2核4G)

腾讯云服务器网整理五年云服务器优惠活动 txyfwq.com/go/txy 配置可选2核4G和4核8G&#xff0c;公网带宽可选1M、3M或5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;…...

Nginx 是如何解决惊群效应的?

什么是惊群效应&#xff1f; 第一次听到的这个名词的时候觉得很是有趣&#xff0c;不知道是个什么意思&#xff0c;总觉得又是奇怪的中文翻译导致的。 复杂的说&#xff08;来源于网络&#xff09;TLDR; 惊群效应&#xff08;thundering herd&#xff09;是指多进程&#xff…...

【深度学习实验】网络优化与正则化(三):随机梯度下降的改进——Adam算法详解(Adam≈梯度方向优化Momentum+自适应学习率RMSprop)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正&#xff1a;动量法Momen…...

如何解决网页中的pdf文件无法下载?pdf打印显示空白怎么办?

问题描述 偶然间&#xff0c;遇到这样一个问题&#xff0c;一个网页上的附件pdf想要下载打印下来&#xff0c;奈何尝试多种办法都不能将其下载下载&#xff0c;点击打印出现的也是一片空白 百度搜索了一些解决方案都不太行&#xff0c;主要解决方案如&#xff1a;https://zh…...

【JVM】类加载器 Bootstrap、Extension、Application、User Define 以及 双亲委派

以下环境为 jdk1.8 两大类 分类成员语言继承关系引导类加载器bootstrap 引导类加载器C/C无自定义类加载器extension 拓展类加载器、application 系统/应用类加载器、user define 用户自定义类加载器Java继承于 java.lang.ClassLoader 四小类 Bootstrap 引导类加载器 负责加…...

读书笔记:彼得·德鲁克《认识管理》第15章 使工作富有成效:工作和过程

一、章节内容概述 不同员工在技术熟练程度、知识掌握程度方面有所不同&#xff0c;但所有工 作本质上都是相同的&#xff0c;为了实现富有成效&#xff0c;需要遵循同样的步骤&#xff0c;划分 为同样的阶段&#xff0c;受到同样的对待&#xff0c;需要分析、综合、控制以及相…...

媒体软文投放的流程与媒体平台的选择

海内外媒体软文&#xff1a;助力信息传播与品牌建设 在当今数字化时代&#xff0c;企业如何在庞大的信息海洋中脱颖而出&#xff0c;成为品牌建设的领军者&#xff1f;媒体软文投放无疑是一项强大的策略&#xff0c;通过选择合适的平台&#xff0c;精准投放&#xff0c;可以实…...

VS2019调试配置报错解析:Designtime生成失败与IntelliSense不可用的深度排查指南

1. 问题现象与初步诊断 当你打开VS2019项目时突然弹出"配置Debug|Win32的Designtime生成失败&#xff0c;IntelliSense可能不可用"的红色错误提示&#xff0c;代码编辑窗口里的智能提示全部消失&#xff0c;连最基本的语法高亮都失效了——这种场景我遇到过不下20次。…...

解锁Joplin无缝笔记体验:3大场景实现全平台知识管理自由

解锁Joplin无缝笔记体验&#xff1a;3大场景实现全平台知识管理自由 【免费下载链接】joplin Joplin 是一款安全笔记记录与待办事项应用&#xff0c;具备跨平台同步功能&#xff0c;支持 Windows、macOS、Linux、Android 和 iOS 平台。 项目地址: https://gitcode.com/GitHub…...

PDF-Parser-1.0保姆级教程:5分钟搞定PDF文档智能解析,小白也能快速上手

PDF-Parser-1.0保姆级教程&#xff1a;5分钟搞定PDF文档智能解析&#xff0c;小白也能快速上手 1. 为什么选择PDF-Parser-1.0&#xff1f; 你是否遇到过这些烦恼&#xff1a; 从PDF复制文字到Word后格式全乱表格数据粘贴后变成一堆乱码论文里的数学公式无法编辑双栏排版的文…...

AMD GPU大模型部署与优化指南:基于ollama-for-amd的本地AI解决方案

AMD GPU大模型部署与优化指南&#xff1a;基于ollama-for-amd的本地AI解决方案 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mir…...

all-MiniLM-L6-v2入门必读:轻量级Embedding模型选型、部署与评估全流程

all-MiniLM-L6-v2入门必读&#xff1a;轻量级Embedding模型选型、部署与评估全流程 想找一个又快又小的文本嵌入模型&#xff0c;但又担心效果不好&#xff1f;很多开发者在做语义搜索、文本分类或者智能问答时&#xff0c;都会遇到这个难题。大模型效果好但太慢&#xff0c;小…...

别再让WIFI信号‘水土不服’!Android 13高通平台国家码配置保姆级教程

Android 13高通平台WIFI国家码配置实战指南 当你的设备跨越国界&#xff0c;WIFI信号却开始"水土不服"——连接不稳定、速度骤降甚至完全无法使用。这背后往往不是硬件问题&#xff0c;而是国家码配置这个隐形门槛在作祟。作为深耕Android系统开发多年的技术专家&am…...

Debian GNU/Linux12高效运维指南(网络配置、远程管理、软件更新与安全防护)

1. Debian GNU/Linux12网络配置实战 刚接触Debian GNU/Linux12的朋友们&#xff0c;网络配置可能是你们遇到的第一个挑战。别担心&#xff0c;我会用最直白的方式带你们搞定这个环节。网络配置就像给新房子拉网线&#xff0c;得先把基础线路接好&#xff0c;后续的上网、远程控…...

DeerFlow免运维部署:自动日志监控与服务启动检测

DeerFlow免运维部署&#xff1a;自动日志监控与服务启动检测 1. 认识你的深度研究助理&#xff1a;DeerFlow 想象一下&#xff0c;你有一个不知疲倦的研究助手。它能帮你搜索全网信息、分析复杂数据、撰写专业报告&#xff0c;甚至还能把枯燥的研究结果变成一段生动的播客。听…...

突破百度网盘限速限制:baidu-wangpan-parse工具的技术实现与应用指南

突破百度网盘限速限制&#xff1a;baidu-wangpan-parse工具的技术实现与应用指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字资源获取日益频繁的今天&#xff0c;许…...

告别散斑噪声困扰:用PyTorch手把手实现DenoDet的频域去噪模块(附完整代码)

频域魔法&#xff1a;用PyTorch实现SAR图像去噪的工程实践 当你在处理SAR图像时&#xff0c;是否曾被那些恼人的散斑噪声困扰&#xff1f;这些像胡椒粒一样随机分布的噪声点不仅影响视觉效果&#xff0c;更会严重干扰目标检测的准确性。传统方法试图在空间域直接对抗噪声&#…...