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

Hot100中的:图论专题

图模板图分为有向图和无向图入度是指向当前节点的边数出度是当前节点指向其他节点的边数200.岛屿数量关键信息一句话总结遍历网格遇到陆地就用 DFS / BFS 把整块连通陆地淹掉并计数方法1BFSclassSolution{publicintnumIslands(char[][]grid){// bfs是这样的 联想我们之前的二叉树// bfs一层一层是左右节点延申出去的// 而这里的图是上下左右四个方向表示一层所以bfs可以一层一层intmgrid.length;intngrid[0].length;intcount0;for(inti0;im;i){for(intj0;jn;j){if(grid[i][j]1){bfs(grid,i,j);count;}}}returncount;}privatevoidbfs(char[][]grid,inti,intj){intmgrid.length;intngrid[0].length;Queueint[]queuenewLinkedList();queue.offer(newint[]{i,j});grid[i][j]0;while(!queue.isEmpty()){int[]curqueue.poll();intxcur[0];intycur[1];int[][]dirs{{1,0},{-1,0},{0,1},{0,-1}};for(int[]d:dirs){intnxxd[0];intnyyd[1];if(nx0nxmny0nyngrid[nx][ny]1){queue.offer(newint[]{nx,ny});grid[nx][ny]0;}}}}}方法2DFSclassSolution{publicintnumIslands(char[][]grid){intcount0;intmgrid.length;intngrid[0].length;for(inti0;im;i){for(intj0;jn;j){if(grid[i][j]1){dfs(grid,i,j);count;}}}returncount;}privatevoiddfs(char[][]grid,inti,intj){intmgrid.length;intngrid[0].length;if(im||i0||jn||j0||grid[i][j]0){return;}// 把当前陆地淹没grid[i][j]0;// 四个方向搜索dfs(grid,i-1,j);dfs(grid,i,j1);dfs(grid,i1,j);dfs(grid,i,j-1);}}方法3并查集1.什么是并查集并查集 用来判断两个东西是不是在同一个集合里它解决了判断这两个点是不是连在一起的问题classSolution{publicintnumIslands(char[][]grid){intmgrid.length;intngrid[0].length;UnionFindufnewUnionFind(m*n);intcount0;// 1.统计所有1for(inti0;im;i){for(intj0;jn;j){if(grid[i][j]1){count;}}}// 2.合并相邻的1for(inti0;im;i){for(intj0;jn;j){if(grid[i][j]1){// 有i行 每行n个 所以 i * n 在j列 所以 i * n j 二维变一维intindexi*nj;// 向下和向右已经包括了所有的覆盖情况 因为我们是从高到低 从左到右遍历的 联想八皇后!// 向下if(i1mgrid[i1][j]1){// 将这个index所在的数 与它下面一个数进行合并if(uf.union(index,(i1)*nj)){count--;}}// 向右if(j1ngrid[i][j1]1){if(uf.union(index,i*nj1)){count--;}}}}}returncount;}classUnionFind{// parent的index表示本身的值 value表示指向父集合 其实就是 index 最终属于 valueint[]parent;publicUnionFind(intn){parentnewint[n];for(inti0;in;i){parent[i]i;}}// 找到最终的父集合并且把路径全部指向最终的父集合publicintfind(intx){if(parent[x]!x){parent[x]find(parent[x]);}returnparent[x];}// 合并两个集合publicbooleanunion(intx,inty){introotXfind(x);introotYfind(y);if(rootXrootY){returnfalse;}parent[rootX]parent[rootY];returntrue;}}}反思我没有想到图的遍历需要用dfs和bfs进行搜索连通性问题、集合合并问题可以用并查集994.腐烂的橘子关键信息一句话总结多源 BFS扩散一层就是一分钟classSolution{publicintorangesRotting(int[][]grid){// 多源bfs 区别于岛屿对时间无要求 每个都bfs就好了intcount-1;intmgrid.length;intngrid[0].length;Queueint[]queuenewLinkedList();intfresh0;for(inti0;im;i){for(intj0;jn;j){if(grid[i][j]2){queue.offer(newint[]{i,j});}if(grid[i][j]1){fresh;}}}if(fresh0){return0;}while(!queue.isEmpty()){intsizequeue.size();// 每一层算1分钟 刚开始不算 从0分钟开始count;for(inti0;isize;i){int[]curqueue.poll();intxcur[0];intycur[1];int[][]dirs{{1,0},{-1,0},{0,1},{0,-1}};for(int[]d:dirs){intnxxd[0];intnyyd[1];if(nx0nxmny0nyngrid[nx][ny]1){grid[nx][ny]2;fresh--;queue.offer(newint[]{nx,ny});}}}}if(fresh0){return-1;}returncount;}}反思我没有抓住它对时间的要求需要同时多源进行bfs而200题不需要多源进行只需要延申就行了207.课程表关键信息一句话总结用拓扑排序判断有向图中是否存在环classSolution{publicbooleancanFinish(intnumCourses,int[][]prerequisites){// 本质判断有向图是否存在环// 1.建图ListListIntegergraphnewArrayList();for(inti0;inumCourses;i){graph.add(newArrayList());}// 2.入度数组int[]indegreenewint[numCourses];// 3.构建邻接表和入度for(int[]p:prerequisites){intap[0];intbp[1];// b这个节点是a的前置graph.get(b).add(a);// a的前置(入度: 指向该节点的边的数量) 1indegree[a];}// 4.把所有入度为0的课程入队QueueIntegerqueuenewLinkedList();for(inti0;inumCourses;i){if(indegree[i]0){queue.offer(i);}}// 5.拓扑排序intcount0;while(!queue.isEmpty()){intcurqueue.poll();count;for(intnext:graph.get(cur)){indegree[next]--;if(indegree[next]0){queue.offer(next);}}}returncountnumCourses;}}反思我没有建模成功建模成判断图中是否存在环应该用拓扑排序208.实现Trie前缀树关键信息一句话总结把字符串拆成路径存进树里用共享前缀实现高效查找与前缀匹配分析isEnd用来标记是否是单词的结尾因为app和apple有共享前缀classTrie{classNode{Node[]childrennewNode[26];booleanisEnd;}privateNoderoot;publicTrie(){rootnewNode();}publicvoidinsert(Stringword){Nodenoderoot;for(charc:word.toCharArray()){intindexc-a;// 只要 new 过一次 这个 if 以后永远是 falseif(node.children[index]null){node.children[index]newNode();}nodenode.children[index];}node.isEndtrue;}publicbooleansearch(Stringword){Nodenodefind(word);if(node!nullnode.isEnd){returntrue;}returnfalse;}publicbooleanstartsWith(Stringprefix){if(find(prefix)!null){returntrue;}returnfalse;}privateNodefind(Strings){Nodenoderoot;for(charc:s.toCharArray()){intindexc-a;if(node.children[index]null){returnnull;}nodenode.children[index];}returnnode;}}/** * Your Trie object will be instantiated and called as such: * Trie obj new Trie(); * obj.insert(word); * boolean param_2 obj.search(word); * boolean param_3 obj.startsWith(prefix); */反思我没有想到共享前缀这个关键点我认为用一个数组或者链表就能完成然而要保证前缀所以有共享前缀不同分支所以就有了链表 哈希表

相关文章:

Hot100中的:图论专题

图模板 图分为有向图和无向图,入度是指向当前节点的边数,出度是当前节点指向其他节点的边数200.岛屿数量 关键信息一句话总结:遍历网格,遇到陆地就用 DFS / BFS 把整块连通陆地淹掉,并计数方法1:BFS class …...

NotaGen完整流程:生成、保存、编辑,一站式AI音乐创作

NotaGen完整流程:生成、保存、编辑,一站式AI音乐创作 1. 引言:AI音乐创作的新范式 音乐创作一直是人类独有的艺术表达方式,而AI技术的进步正在改变这一格局。NotaGen作为基于LLM范式的符号音乐生成工具,将古典音乐创…...

Altium Designer 13.1实战:从零开始绘制Lemo连接器封装(附常见错误解析)

Altium Designer 13.1实战:从零开始绘制Lemo连接器封装(附常见错误解析) 在电子设计领域,元件封装的准确性直接决定了PCB设计的成败。作为硬件工程师的基本功,封装绘制看似简单却暗藏玄机。本文将带您深入Altium Desig…...

Alibaba DASD-4B Thinking 对话工具 AIGC 内容创作实战:从文案到多模态内容规划

Alibaba DASD-4B Thinking 对话工具 AIGC 内容创作实战:从文案到多模态内容规划 1. 引言:当创意遇上智能助手 你有没有过这样的经历?面对空白的文档,脑子里有无数想法在打转,却不知道从何下笔。想写一篇吸引人的产品…...

如何通过Legacy-iOS-Kit让旧iOS设备重获新生:从卡顿困境到高效重生的完整指南

如何通过Legacy-iOS-Kit让旧iOS设备重获新生:从卡顿困境到高效重生的完整指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Lega…...

RexUniNLU效果展示:真实案例解析新闻事件结构化

RexUniNLU效果展示:真实案例解析新闻事件结构化 1. 新闻结构化处理的行业痛点 1.1 传统新闻处理的效率瓶颈 在新闻媒体和舆情监测领域,每天需要处理海量非结构化文本数据。以某省级融媒体中心为例,其每日需要分析的新闻稿件超过2000篇&…...

多动症孩子的运动干预是什么?主要有怎样的方法?

学校如何有效识别与诊断多动症孩子的ADHD症状表现 在学校环境中,及时有效地识别多动症(ADHD)儿童的症状至关重要。教师应关注孩子在课堂上的表现,例如是否经常出现注意力不集中、难以完成作业或经常打断他人。常见的ADHD症状表现还…...

Qwen3-32B-Chat在RTX4090D上的GPU算力极致优化:FlashAttention-2加速推理实操

Qwen3-32B-Chat在RTX4090D上的GPU算力极致优化:FlashAttention-2加速推理实操 1. 开箱即用的私有部署方案 Qwen3-32B作为当前最强大的开源大语言模型之一,其32B参数的规模对硬件提出了极高要求。我们针对RTX4090D显卡24GB显存特性,推出了深…...

DVWA命令注入实战:从原理到多级黑名单绕过技巧

1. 命令注入漏洞的本质与危害 命令注入(Command Injection)是Web安全领域最常见的高危漏洞之一,它允许攻击者通过构造特殊输入,在服务器上执行任意系统命令。想象一下,如果网站有个功能是让用户输入IP地址来测试网络连…...

Nanbeige 4.1-3B基础教程:Streamlit像素终端响应式布局适配方案

Nanbeige 4.1-3B基础教程:Streamlit像素终端响应式布局适配方案 1. 项目介绍与核心价值 Nanbeige 4.1-3B像素冒险聊天终端是一款专为对话AI设计的复古风格前端界面。它将传统AI对话体验转变为充满游戏感的交互过程,特别适合希望为用户提供沉浸式体验的…...

Qwen3-ASR-1.7B部署案例:单卡3090部署高精度ASR服务并支持并发请求

Qwen3-ASR-1.7B部署案例:单卡3090部署高精度ASR服务并支持并发请求 你有没有遇到过这样的场景?手头有一堆会议录音、采访音频或者外语学习材料,需要快速、准确地转换成文字。手动听写?效率太低,还容易出错。市面上的在…...

SiameseUIE金融舆情监控:上市公司事件抽取

SiameseUIE金融舆情监控:上市公司事件抽取 1. 引言 金融市场的波动往往源于信息的不对称。每天,成千上万的新闻、公告、研报在市场上流动,投资者需要快速识别其中关键信息,做出及时决策。传统的人工监控方式效率低下&#xff0c…...

Qwen3数据分析与可视化:利用Matlab评估对齐效果指标

Qwen3数据分析与可视化:利用Matlab评估对齐效果指标 最近在做一个关于多模态大模型的项目,其中涉及到评估模型生成的字幕时间戳是否准确。我们选用了Qwen3模型,但光看它输出的结果,很难量化地说它到底“好”还是“不好”。这时候…...

4步终极指南:用OpenCore Legacy Patcher解决老旧Mac蓝牙兼容性问题

4步终极指南:用OpenCore Legacy Patcher解决老旧Mac蓝牙兼容性问题 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否拥有一台2015年以前的Mac设备&#x…...

DoL-Lyra开源整合方案:跨平台配置与资源管理指南

DoL-Lyra开源整合方案:跨平台配置与资源管理指南 【免费下载链接】DoL-Lyra Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DoL-Lyra 您是否在Degrees of Lewdity游戏的Mod整合过程中遭遇过版本选择困难、跨平台兼容性问题或资源管理…...

机械臂空间运动基础:从旋转矩阵到齐次变换的实践解析

1. 机械臂运动控制的数学基石 刚接触机械臂编程时,我最头疼的就是如何让机械臂末端精准地移动到指定位置。后来发现,这背后的数学工具其实就像乐高积木——旋转矩阵和平移变换是基础模块,齐次变换则是组装说明书。想象你拿着手机导航找餐厅&a…...

Langgraph 16. OpenClaw 的 Goal Setting and Monitoring 机制深度解析

摘要:本文在前文 LangGraph 15. Goal Setting and Monitoring 的基础上,深入剖析 OpenClaw(开源个人 AI 助手)如何实现 Goal Setting(目标设定)与 Monitoring(监控)。OpenClaw 不依赖…...

LangGraph 15. Goal Setting and Monitoring —— 用 LangGraph 写一个「有目标、会自检」的智能体(含代码示例)

摘要:本文介绍如何在 LangGraph 中实现 Goal Setting(目标设定)与 Monitoring(监控)。案例介绍:配套 demo 实现一个 AI 代码生成智能体——用户提供编程需求与质量目标(如「简单易懂、功能正确、…...

VMware macOS解锁器终极指南:5分钟轻松在Windows/Linux上运行苹果系统

VMware macOS解锁器终极指南:5分钟轻松在Windows/Linux上运行苹果系统 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想要在VMware虚拟机中体验macOS的流畅操作,却总是遇到兼容性障碍?VMware …...

ChatGLM-6B在软件测试领域的创新应用:智能用例生成

ChatGLM-6B在软件测试领域的创新应用:智能用例生成 1. 引言 在软件开发过程中,测试用例设计往往是最耗时且容易出错的环节之一。传统的测试用例编写方式不仅效率低下,还容易出现遗漏和重复。想象一下,一个中型项目可能需要数百甚…...

mmdetection3d分布式训练实战:从单机多卡到多机多卡配置详解

1. 分布式训练基础概念 第一次接触分布式训练时,我被各种术语绕得头晕眼花。后来在实际项目中踩过几次坑才明白,其实核心思想很简单:让多张GPU协同工作,加速模型训练。在mmdetection3d框架中,最常用的就是数据并行模式…...

从Labelme标注到YOLOv3模型部署:一个完整的目标检测项目实战

1. 从零开始:Labelme数据标注全流程 目标检测项目的第一步就是准备高质量的标注数据。我刚开始接触工业质检项目时,花了整整两周时间才搞明白标注工具的选择和标注规范的重要性。Labelme作为一款开源标注工具,支持多边形、矩形、圆形等多种标…...

Python情感分析实战:手把手教你用BosonNLP情感词典做极性分析(附完整代码)

Python情感分析实战:从词典构建到极性分析的完整实现 在当今数据驱动的商业环境中,情感分析已成为企业洞察用户反馈、监控品牌声誉的重要工具。不同于依赖大量标注数据的机器学习方法,基于词典的情感分析方案以其简单高效的特点,特…...

ATAC-seq数据质控避坑指南:如何评估你的实验是否成功?

ATAC-seq数据质控避坑指南:如何评估你的实验是否成功? 当你在实验室里完成了ATAC-seq实验,拿到了测序数据,接下来的关键问题就是:这次实验成功了吗?数据质量如何?是否需要重新实验?这…...

流量检测中涉及到的距离

流量入侵检测中常用的距离: 距离类型 适用场景 注意事项 曼哈顿/欧氏 快速筛选、预处理后的一般数值特征 需要特征标准化 余弦 高维稀疏特征(如协议计数分布) 忽略数值大小 DTW 包长/时间间隔序列的相似性比较 计算开销大,需加速算法 KL/JS散度 检测流量分布的整体变化(概…...

开源可部署!Nanbeige 4.1-3B像素前端镜像免配置快速上手指南

开源可部署!Nanbeige 4.1-3B像素前端镜像免配置快速上手指南 1. 项目概览 Nanbeige 4.1-3B像素前端是一款专为AI对话设计的创新界面,将现代大模型能力与复古游戏美学完美融合。这个开源项目基于Streamlit框架开发,为Nanbeige 4.1-3B模型提供…...

Get-cookies.txt-LOCALLY:本地Cookie导出工具的完整指南与安全实践

Get-cookies.txt-LOCALLY:本地Cookie导出工具的完整指南与安全实践 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在当今数字化时代&a…...

Android音视频开发实战:如何用ExoPlayer+FFmpeg解决冷门格式播放难题

Android音视频开发实战:ExoPlayer与FFmpeg的深度整合方案 在移动应用开发领域,音视频播放功能已成为教育、社交、娱乐等各类应用的标配需求。然而当用户上传的媒体文件格式超出常规范围时,开发者往往会陷入兼容性困境。我曾在一个在线教育项目…...

幻境·流金应用场景:短视频团队日更100条封面——模板化Prompt+批量生成

幻境流金应用场景:短视频团队日更100条封面——模板化Prompt批量生成 1. 引言:当“日更”成为常态,封面制作如何破局? 对于任何一个短视频团队来说,“日更”都是一个既让人兴奋又充满压力的词。它意味着稳定的内容输…...

Qwen3-VL-4B Pro应用案例:电商商品图识别与自动描述实战

Qwen3-VL-4B Pro应用案例:电商商品图识别与自动描述实战 1. 导语:电商运营的“看图说话”新解法 如果你在电商行业工作,每天面对成百上千张商品图片,是不是经常遇到这样的烦恼:新上架的商品需要手动写描述&#xff0…...