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

[算法训练] LeetCode Hot100 学习笔记#21

DAY21 2026.05.10

LeetCode208 实现Trie(前缀树) [图论]

​ 前缀树

初始化:

  • 题目只包含26个小写字母,所以创建一颗26叉树,一开始只有一个根节点root
  • 26叉树每个节点包含一个长为26的儿子节点列表child以及一个布尔值isEnd,isEnd表示该节点是否为终止节点

插入:

  • 遍历字符串word,用curNode表示当前在树的哪个节点,初始值为root
  • 如果word[i]不是curNode的儿子,则新建一个节点作为其儿子,连接下标位置为"word[i] - 'a'"
  • 更新curNode为儿子列表中相应节点
  • 遍历结束时,把curNode的isEnd标记为true,表示此处有一个单词已记录

查找:

  • 遍历字符串word,用curNode表示当前在树的哪个节点,初始值为root
  • 如果word[i]不是curNode的儿子,则没找到目标单词,直接返回false
  • 如果word[i]是curNode的儿子,更新curNode为儿子列表中相应节点,往下遍历
  • 遍历结束时,判断curNode的isEnd标记是否为true,如果为true则说明找到了目标单词,否则表示没匹配上

LeetCode215 数组中的第K个最大元素 [堆、快速选择排序]

​ 方法一:小顶堆,时间复杂度O(nlogn),使用优先队列实现小顶堆,维护队列大小最大为k个。当size大于k时,将队列中最小的(堆顶)弹出去。如此遍历完数组后,小顶堆peek即为数组中第K个最大元素

​ 方法二:快速选择排序,时间复杂度O(n),核心思路是第K大元素在升序数组的下标是n-k。

​ 在nums中随机选择一个基准元素base,将小于base的元素放左边,大于等于base的元素放右边,这样划分后,base所处的位置就是最终在排序完毕后升序数组的位置

​ 设base在nums中的下标为i。如果i=n-k,则找到答案;如果i>n-k,说明答案在base左侧部分,在其中继续寻找;如果i<n-k,说明答案在base右侧部分,在其中继续寻找

LeetCode347 前K个高频元素 [堆]

​ 小顶堆,使用优先队列实现小顶堆,维护队列大小最大为k个

​ 先用HashMap去重,统计数组中各元素的出现频次。然后实现用频次大小比较的优先队列,往里塞元素。当size大于k时,将队列中频次最小的元素(堆顶)弹出去。如此遍历完HashMap后,现有的小顶堆内元素即为前k个高频元素

LeetCode295 数据流的中位数 [堆]

​ 大小顶堆。把一堆数均分成了left、right两部分,left里的数都比right的小,中位数就来自于left的最大值和right的最小值

​ 随着addNum不断添加数字,要保证left里的数都比right的小,left和right的元素个数尽量相等,且总数为奇数个时,left比right多一个元素

​ left用大顶堆,right用小顶堆

​ 如果当前left大小与right大小相等,添加的num先加到right里,再把right里最小的元素弹出,加到left里

​ 如果当前left比right多一个元素,添加的num先加到left里,再把left中最大的元素弹出,加到right里

​ 最后,如果当前总元素数为奇数,则中位数为left中最大元素(大顶堆peek);如果当前总元素数为偶数,则中位数为left中最大元素(大顶堆peek)和right中最小元素(小顶堆peek)的平均数

http://www.jsqmd.com/news/791507/

相关文章:

  • 大会证件/笔记本/开发板丢失怎么办?一线运维团队整理的7类高危物品应急响应SOP,含密钥擦除与隐私保护强制流程
  • 保姆级教程:用Arduino IDE给GRBL固件刷机,手把手搞定激光雕刻机大脑
  • 如何永久保存微信聊天记录?WeChatMsg终极解决方案
  • 告别混乱!用PyQt5 Designer + 控制器模式,优雅管理多窗口跳转(附完整代码)
  • 如何实现微信聊天记录的永久保存与智能分析?WeChatMsg完整指南
  • 需求分析师正在被替代?SITS 2026认证NL2REQ引擎实测报告:准确率92.7%,但仅17%团队掌握关键提示词治理协议
  • 郑州鼎之鑫改灯15年老店:2026年最新郑州改灯专业靠谱口碑首推五星级门店全解析 - Reaihenh
  • Meta Builder:基于AI的研究任务自动化构建与生产就绪报告生成
  • TCP与UDP区别
  • AI原生安全CLI Zypheron:重构渗透测试工作流,智能引导实战攻防
  • 抖音去水印下载:如何构建专业级内容采集工作流
  • 2026AI医疗急救系统落地实战手册(附卫健委备案模板+边缘算力配置清单)
  • Python通达信数据接口终极指南:5分钟快速上手量化分析
  • LinkSwift:彻底告别网盘下载限速的终极解决方案
  • oh-my-zsh主题太多挑花眼?我用Python写了个脚本帮你一键预览和切换
  • 从Max Pressure到PressLight:一个交通信号控制算法的演进史与实战效果对比
  • 别再死记硬背公式了!用MATLAB/Simulink手把手复现PMSM滑模观测器(SMO)设计全流程
  • 3分钟搞定AcFun视频下载:免费离线保存你喜欢的A站内容
  • 基于Gemini CLI的深度研究工具:原理、配置与实战指南
  • 告别路由器!一根网线搞定开发板、PC与虚拟机Ubuntu的局域网通信(含IP避坑指南)
  • 告别正点原子,手把手教你为GD32F407移植LWIP(无操作系统版)
  • VMware Workstation Pro磁盘扩容后,Linux内部LVM分区挂载不上?手把手教你排查
  • 理解 MySQL 行锁:两阶段锁协议与热点更新优化
  • 用OneNET平台快速搭建你的第一个智慧农业监控系统(HTTP协议接入实战)
  • 手把手教你用NET30-CS桥接器搞定欧姆龙CP/CJ系列PLC的ModbusTCP通讯(附地址映射表)
  • ANSYS Workbench接触分析实战:从算法选择到收敛难题破解
  • 抖音视频无水印保存到相册怎么操作?2026实测无水印保存方法全汇总 - 科技热点发布
  • 实战解析:基于51单片机的可控硅调光系统设计,附光耦过零检测与安全调试心得
  • 小红书视频怎么去水印保存?小红书保存视频去水印方法2026实测全攻略 - 科技热点发布
  • 通过Vector CANoe/CANalyzer系统变量构建CAN信号运算模型,实现精准关联分析