自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 收藏
  • 关注

原创 LeetCode 刷题【181. 超过经理收入的员工】

该查找薪资高于其经理的员工。通过自连接Employee表(别名e1和e2),将员工的managerId与经理的id匹配,并筛选出e1.salary大于e2.salary的记录

2025-12-04 21:24:39 20

原创 LeetCode 刷题【180. 连续出现的数字】

找出连续出现至少3次的相同数字。它通过自连接Logs表三次,分别获取当前记录(a)、下一条记录(b)和下下条记录(c)。通过比较三者的id(相差1和2)和num值是否相等,筛选出连续三次出现相同数字的记录,并使用DISTINCT去除重复结果。最终返回这些连续出现的数字作为ConsecutiveNums。

2025-12-03 10:11:26 57

原创 LeetCode 刷题【179. 最大数】

将整数数组排列成最大数字的问题。关键步骤是将数字转为字符串数组,自定义排序规则:比较两字符串拼接后的字典序(a+b与b+a比较)。排序后拼接所有字符串,并处理前导零情况。

2025-12-02 16:08:30 142

原创 LeetCode 刷题【178. 分数排名】

对分数表进行排名计算。使用DENSE_RANK()窗口函数,按照分数降序(desc)为每条记录分配排名。与RANK()不同,DENSE_RANK()在遇到相同分数时不会跳过后续排名序号,而是保持连续的排名编号

2025-12-01 10:04:08 100

原创 LeetCode 刷题【177. 第N高的薪水】

查询第N高的薪资。通过声明变量m=N-1调整偏移量,然后使用DISTINCT和ORDER BY对薪资降序排序,最后用LIMIT 1 OFFSET m获取第N高的记录

2025-11-30 18:48:21 109

原创 LeetCode 刷题【176. 第二高的薪水】

查找员工表中第二高的薪水。通过DISTINCT去重后按薪水降序排序,使用LIMIT 1 OFFSET 1跳过最高薪记录并获取第二条记录,最终将结果命名为SecondHighestSalary返回

2025-11-29 11:22:44 192

原创 LeetCode 刷题【175. 组合两个表】

组合Person和Address表 :SQL查询使用LEFT JOIN操作将Person和Address两个表进行关联,查询结果包含人员姓名和地址信息。查询从Person表选取FirstName和LastName字段,从Address表选取City和State字段,通过PersonId字段进行关联。LEFT JOIN确保即使某些人员在Address表中没有对应记录,也会在结果中显示其姓名信息。这种查询方式常用于需要获取人员基本信息及其相关地址数据的场景。

2025-11-28 10:04:05 199

原创 LeetCode 刷题【174. 地下城游戏】

使用动态规划解决地下城游戏问题。从终点逆向计算每个位置所需最小生命值,初始化边界为极大值,终点相邻位置设为1。通过比较下方和右方的最小值,减去当前格子消耗,并与1取最大值更新dp数组。

2025-11-27 16:41:57 192

原创 LeetCode 刷题【173. 二叉搜索树迭代器】

二叉搜索树迭代器(BSTIterator),使用栈结构进行中序遍历。初始化时将左子树节点全部入栈,next()方法弹出栈顶节点后处理其右子树,hasNext()检查栈是否为空

2025-11-26 10:32:46 95

原创 LeetCode 刷题【172. 阶乘后的零】

计算阶乘结果末尾零的数量。通过统计阶乘数中因子5的个数来确定末尾零的数量,因为每个5与2相乘会产生一个零。算法使用循环结构,不断累加n除以5的幂次方的结果

2025-11-25 10:18:59 178

原创 LeetCode 刷题【171. Excel 表列序号】

将Excel表格列标题转换为对应的序号。通过从右到左遍历字符串,将每个字符转换为对应的数值(A=1,...,Z=26),并按26进制进行累加计算

2025-11-24 09:14:31 223

原创 LeetCode 刷题【169. 多数元素】

求解多数元素问题。第一种直接排序后取中间值;第二种通过精简快排实现;第三种基于摩尔投票法,通过计数器高效找出出现次数超过半数的元素。其中摩尔投票法最为高效,只需一次遍历

2025-11-23 11:42:27 245

原创 LeetCode 刷题【168. Excel 表列名称】

将数字转换为Excel表列名称。通过StringBuffer构建字符串,每次循环将数字减1后取26的余数转换为字母,再除以26继续处理,最后反转字符串输出。

2025-11-22 17:06:28 297

原创 LeetCode 刷题【166. 分数到小数、167. 两数之和 II - 输入有序数组】

1. 分数转小数(166题):通过处理整数和小数部分,使用哈希表记录余数位置检测循环节,最终拼接结果字符串。2. 两数之和II(167题):针对有序数组采用双指针法,通过调整左右指针位置寻找目标和。

2025-11-21 11:16:29 185

原创 LeetCode 刷题【165. 比较版本号】

比较两个版本号字符串。通过按点号'.'分割版本号,逐个比较每个数字段。使用双指针从右向左解析每个段为整数值,若version1段值大返回1,version2段值大返回-1,所有段都相等则返回0。处理过程考虑了不同长度版本号的情况,确保正确比较各段数值。

2025-11-19 10:19:50 166

原创 LeetCode 刷题【164. 最大间距】

求解数组最大间距问题:1)简单排序法:先将数组排序,然后遍历计算相邻元素差值的最大值。2)基数排序法(官方题解):通过分位数位进行排序,最后计算相邻元素差值。

2025-11-18 09:51:11 110

原创 LeetCode 刷题【162. 寻找峰值】

在数组中寻找峰值元素。第一种解法采用线性扫描,通过三指针比较相邻元素,第二种官方解法使用随机化方法,随机选取初始位置后通过比较函数调整搜索方向,利用辅助函数处理边界值,最终定位峰值元素。

2025-11-17 18:28:14 176

原创 LeetCode 刷题【160. 相交链表】

查找两个相交链表的交点。通过计算两个链表的长度差,调整较长链表的起始指针位置使其与较短链表同步移动,然后同时遍历两个链表直到找到相同节点。

2025-11-16 11:44:09 217

原创 LeetCode 刷题【155. 最小栈】

两种实现最小栈的解法。第一种使用栈+链表结构,通过链表维护有序节点来获取最小值,但操作较复杂。第二种是官方题解方案,采用双栈结构,主栈存储数据,辅助栈同步存储当前最小值

2025-11-15 21:52:54 478

原创 LeetCode 刷题【154. 寻找旋转排序数组中的最小值 II】

旋转排序数组中寻找最小值。通过二分查找优化,当数组可能有重复元素时,通过比较中间元素与边界值来缩小搜索范围

2025-11-14 20:40:25 201

原创 LeetCode 刷题【153. 寻找旋转排序数组中的最小值】

在旋转排序数组中寻找最小值。使用二分查找方法,通过比较中间元素与首尾元素的值来确定最小值所在区间,逐步缩小搜索范围。

2025-11-13 19:34:49 132

原创 LeetCode 刷题【152. 乘积最大子数组】

求解数组中乘积最大子数组。第一种方法使用二维DP数组,初始化对角线元素后逐步计算子数组乘积,但存在处理0值的特殊情况。第二种优化方法维护两个一维数组maxF和minF,分别记录以当前元素结尾的最大和最小乘积,通过比较前一状态与当前值的乘积来更新状态。

2025-11-12 11:23:11 226

原创 LeetCode 刷题【151. 反转字符串中的单词】

反转字符串中单词顺序的解法。自定义解法通过单次遍历逐个处理单词,手动拼接反转结果。官方题解则使用trim()去除首尾空格,利用正则表达式分割字符串后反转并拼接

2025-11-11 11:50:36 317

原创 LeetCode 刷题【150. 逆波兰表达式求值】

栈结构求解逆波兰表达式的方法。算法遍历表达式中的每个元素:当遇到数字时压入栈;遇到运算符则弹出栈顶两个数字进行相应运算,并将结果重新压栈。最终栈中仅剩的值即为表达式结果。

2025-11-10 15:00:34 144

原创 LeetCode 刷题【149. 直线上最多的点数】

求解直线上最多点数。对于每个点,计算与其他点的斜率(用最简分数形式表示),使用哈希表记录相同斜率出现的次数。处理斜率时考虑水平和垂直情况,并通过最大公约数化简分数。最终返回最大共线点数加1(包含当前点)

2025-11-09 22:35:50 146

原创 LeetCode 刷题【148. 排序链表】

链表的归并排序。通过递归方式将链表不断二分,直到单个节点后,利用merge方法有序合并两个已排序的子链表。merge方法通过双指针遍历两个链表,按值大小顺序连接节点。

2025-11-08 11:09:13 200

原创 LeetCode 刷题【147. 对链表进行插入排序】

链表插入排序的实现方法。算法使用哨兵节点简化边界条件处理,通过遍历链表将每个节点插入到已排序部分的正确位置。当当前节点值小于前一节点时,从链表头部开始查找插入位置;否则继续向后遍历。

2025-11-07 21:41:29 233

原创 LeetCode 刷题【146. LRU 缓存】

两种LRU缓存实现方案。第一种使用双哈希表+TreeMap方案,通过维护数据表、键-时间表和时间-键表来跟踪访问顺序,淘汰最久未使用的数据时需遍历TreeMap。第二种是官方题解采用的双向链表+哈希表方案,通过双向链表维护访问顺序,配合哈希表快速定位节点

2025-11-06 14:51:56 249

原创 LeetCode 刷题【145. 二叉树的后序遍历】

二叉树后序遍历的递归解法。通过定义一个递归函数postTravel,先递归访问左子树,再递归访问右子树,最后将当前节点值加入结果列表。

2025-11-05 16:32:17 198

原创 LeetCode 刷题【144. 二叉树的前序遍历】

使用递归方法实现二叉树前序遍历。代码定义了一个Solution类,通过preTraversal方法递归访问节点(根-左-右),将节点值存入列表。preorderTraversal方法作为入口,调用递归方法并返回结果列表。该解法遵循前序遍历的基本原理,当节点为空时终止递归

2025-11-04 10:18:01 150

原创 LeetCode 刷题【143. 重排链表】

一个重排链表(L0→Ln→L1→Ln-1→...)。算法分为三步:1)使用快慢指针将链表从中间断开;2)反转后半部分链表;3)交替合并前后两部分。

2025-11-03 20:50:19 163

原创 LeetCode 刷题【142. 环形链表 II】

环形链表II问题。采用双指针(slow,fast)策略,当快慢指针相遇后,再用指针从头部出发与慢指针同步移动,相遇点即为环入口

2025-11-02 10:57:53 168

原创 LeetCode 刷题【141. 环形链表】

检测环形链表。通过定义快指针(p)和慢指针(q)同时遍历链表,快指针每次移动两步,慢指针移动一步。当快慢指针相遇时说明存在环,否则快指针到达链表末尾则无环。

2025-11-01 10:17:21 123

原创 LeetCode 刷题【140. 单词拆分 II】

使用回溯算法解决单词拆分II问题。通过构建哈希表存储中间结果,递归地搜索所有可能的单词分割方式。算法从字符串起始位置开始,检查每个子串是否在字典中,若存在则递归处理剩余部分,最后合并结果并缓存以避免重复计算。

2025-10-31 21:05:41 237

原创 LeetCode 刷题【139. 单词拆分】

单词拆分问题:第一种是采用递归回溯的自制解法,但由于超时而不可行;第二种是官方推荐的动态规划解法。递归方法通过逐个匹配字典单词进行搜索,而动态规划解法使用布尔数组dp记录子串匹配状态,通过双重循环判断子串是否可拆分

2025-10-30 12:04:21 291

原创 LeetCode 刷题【138. 随机链表的复制】

复制带随机指针的链表。主要步骤为:1) 使用哈希表存储原链表节点与索引的映射;2) 先按next指针顺序复制新链表,并保存各节点到ArrayList;3) 二次遍历时通过哈希表查找random指针对应的索引,从ArrayList获取对应新节点建立random关系。

2025-10-29 12:04:41 197

原创 LeetCode 刷题【136. 只出现一次的数字、137. 只出现一次的数字 II】

136题(出现一次的数字),排序和哈希表可以解,但最优解是官方提供的位运算(异或)方案,对于137题(出现特定次数的数字),官方则给出基于位运算的进阶方案,通过对每位求和并取模3来识别唯一数字

2025-10-28 20:41:43 264

原创 LeetCode 刷题【135. 分发糖果】

解决分发糖果问题。算法采用两次遍历:第一次从左到右确保右高分孩子糖果更多,第二次从右到左确保左高分孩子糖果更多,最终取两次遍历的最大值求和。

2025-10-27 18:16:48 304

原创 LeetCode 刷题【134. 加油站】

解决加油站环行问题的算法。第一种暴力解法时间复杂度较高,通过双重循环逐一检查每个加油站作为起点的可行性。第二种优化解法(官方题解)采用贪心策略,当发现某段路程不可行时直接跳过中间站点,将时间复杂度降低到O(n)。

2025-10-26 19:33:43 221

原创 LeetCode 刷题【133. 克隆图】

图的深度优先搜索(DFS)克隆算法。通过定义Node类表示图节点,使用HashMap记录已克隆节点,HashSet标记访问过的节点。cloneGraph方法初始化克隆过程,DFS方法递归遍历原图,为每个未克隆的节点创建副本并建立边关系。

2025-10-25 12:08:04 123

A Comprehensive Survey for Real-World Industrial Defect Detection Challenges阅读笔记25.7综述.pdf

内容概要:本文是一篇关于真实世界工业缺陷检测的综合性综述,系统梳理了当前工业缺陷检测面临的核心挑战、主流技术方法及未来发展趋势。文章重点分析了从传统闭集缺陷检测向开放集异常检测的范式转变,涵盖了2D缺陷检测中的监督与无监督方法,深入探讨了基于回归、记忆库、流模型和判别式等四大类异常检测框架,并介绍了少样本、零样本及基于视觉语言模型(如CLIP)的前沿进展。同时,文中还讨论了数据稀缺、细微缺陷识别、多尺度检测、实时性要求以及模型过度泛化等问题,并总结了代表性数据集(如MVTec AD、Real-IAD等)的演进趋势。; 适合人群:从事计算机视觉、工业质检、智能制造领域的研究人员与工程师,具备一定深度学习和图像处理基础的硕博研究生及企业研发人员; 使用场景及目标:①理解工业缺陷检测从闭集到开放集的技术演进路径;②掌握无监督、半监督、零/少样本异常检测的核心方法与实现机制;③了解多模态融合、大模型迁移在工业检测中的应用前景;④为构建高效、鲁棒的实际工业质检系统提供理论支持和技术选型参考; 阅读建议:建议结合文中提及的经典方法(如PatchCore、DRAEM、WinCLIP等)和公开数据集进行代码复现与实验验证,重点关注特征提取与比较阶段的设计思路,同时注意区分不同应用场景下方法的适用边界,尤其在面对真实产线复杂环境时应综合考虑精度、速度与泛化能力的平衡。

2025-09-21

扩散模型(Diffusion Model)笔记

扩散模型(Diffusion Model)笔记

2025-09-19

变分自编码器VAE的学习笔记

内容概要:本文通过通俗易懂的方式讲解变分自编码器(VAE)的核心原理,重点阐述了其与传统自编码器(AE)的区别,即VAE的隐变量为连续的概率分布而非离散点。文章介绍了VAE的基本结构,包括编码器将输入数据映射为隐空间中的概率分布(均值和方差),以及解码器从该分布采样并重构原始数据的过程。核心在于通过最大化证据下界(ELBO)来逼近真实后验分布p(z|x),其中ELBO由重构损失(如L1/L2 loss)和KL散度两部分组成,分别保证生成质量和隐空间分布的合理性。同时解释了KL散度在生成模型中的意义及其与先验分布的匹配机制。此外,还简要对比了VAE与扩散模型的特点。; 适合人群:具备一定机器学习基础、对深度生成模型感兴趣的初学者或研究人员,尤其是希望理解VAE数学原理与实现机制的学习者; 使用场景及目标:①理解VAE如何通过概率建模实现数据生成;②掌握ELBO推导、KL散度作用及训练过程中隐变量的重参数化技巧;③为后续学习更复杂的生成模型(如扩散模型)打下基础; 阅读建议:建议结合文中公式与图示逐步推导ELBO,动手实现编码器-解码器结构,并通过实验观察KL散度对隐空间分布的影响,加深对VAE生成机制的理解。

2025-09-18

Python手写数字识别【CNN卷积神经网络实现】代码文件

Python手写数字识别【CNN卷积神经网络实现】代码文件

2025-07-13

《Revisiting Generative Replay for Class Incremental Object Detection》阅读笔记

《Revisiting Generative Replay for Class Incremental Object Detection》阅读笔记

2025-07-10

obsidian笔记简单使用【Markdown语法】

obsidian笔记简单使用【Markdown语法】

2025-07-07

第十二章 职工管理系统源代码

第十二章 职工管理系统源代码

2025-06-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除