- 博客(42)
- 收藏
- 关注
原创 LeetCode 404.左叶子之和的递归求解:终止条件与递归逻辑的深度剖析
LeetCode 404. 左叶子之和要求计算二叉树中所有左叶子节点的值之和。如果一个节点是其父节点的左子节点,并且它本身没有左右子节点,则称为左叶子。最小子问题:明确最底层的返回值(空树、叶子节点返回0);无重复判断:终止条件需覆盖所有无需继续递归的情况。
2025-05-22 21:11:01
937
原创 LeetCode 404.左叶子之和的迭代求解:栈结构与父节点定位的深度解析
LeetCode 404. 左叶子之和要求计算二叉树中所有左叶子节点的值之和。如果一个节点是其父节点的左子节点,并且它本身没有左右子节点,则称为左叶子。栈结构的双重作用作为遍历容器,实现深度优先搜索;保存父节点,为左叶子判断提供上下文。
2025-05-22 21:08:09
549
原创 LeetCode 257. 二叉树所有路径的迭代解法:栈的妙用与类型设计深度解析
栈的双重功能既是节点遍历的容器,也是路径记录的载体,通过Object类型实现多数据类型存储。
2025-05-22 20:49:29
371
原创 LeetCode 257. 二叉树所有路径求解:回溯算法的深度解析与实践
状态维护清晰定义状态(如本题的temp路径),并在递归过程中正确维护状态。终止条件明确何时停止递归并处理结果(如到达叶子节点)。回溯机制递归返回前必须撤销当前选择,恢复到之前的状态(如递归顺序确保递归顺序符合问题要求(如本题的先左后右遍历)。理解回溯算法的关键在于将其视为“有记忆的DFS”,通过状态的动态维护与恢复,实现对所有可能解的系统探索。在树结构中,回溯算法天然匹配树的递归结构,成为求解路径问题的高效手段。
2025-05-22 17:17:29
566
原创 平衡二叉树的判定:回溯法的深度解析与迭代法拓展
给定一棵二叉树,判断它是否是平衡二叉树。每个节点的左右子树的高度差的绝对值不超过 1,且左右子树本身也必须是平衡二叉树。代码简洁性:用最少的代码实现逻辑,适合快速验证算法正确性。思维直观性:天然匹配树的递归结构,易于理解和调试。
2025-05-21 21:23:29
632
原创 SQL 多表关联与分组聚合:解密答题正确率分析
题目要求:计算浙江大学用户在不同难度题目下的答题正确率,并按正确率升序排序。关键分析点:假设各表结构及部分数据:user_profile:question_practice_detail:question_detail:预期结果:2.2 关键技术点分解1. 三表关联策略作用:通过关联用户与答题记录通过关联答题记录与题目难度选择内连接的原因:仅统计实际答题的用户和题目排除未答题用户或无难度信息的题目2. 正确率计算逻辑分子:统计正确答题数分母:统计总答题数ROUN
2025-05-21 14:01:18
793
原创 SQL分组查询深度解析:如何优雅统计用户答题数据
左连接的使用:确保主表数据完整性,处理可能不存在的关联数据COUNT与SUM的组合COUNT统计记录数(忽略NULL)SUM结合CASE实现条件计数分组逻辑:GROUP BY字段与SELECT非聚合字段必须匹配日期范围处理:使用DATE_ADD精确计算日期边界。
2025-05-21 13:33:18
602
原创 SQL 数值计算全解析:ABS、CEIL、FLOOR与ROUND函数深度精讲
ABS函数:获取绝对值,处理负数场景CEIL与FLOOR函数:掌握向上/向下取整的方向逻辑ROUND函数:精确控制小数位数,注意进位规则NULL值处理:使用COALESCE函数增强健壮性。
2025-05-21 13:14:36
494
原创 SQL窗口函数破解:如何优雅获取各分组极值
窗口函数工作原理:分组、排序、计算排名RANK()与ROW_NUMBER()差异:处理并列排名的不同策略子查询过滤逻辑:通过外层WHERE子句筛选目标记录索引优化技巧:复合索引加速分组和排序操作。
2025-05-21 12:33:51
511
原创 SQL 字符串解析神器:SUBSTRING_INDEX 函数深度剖析
str:待处理的字符串delimiter:分隔符(如等)count:截取方向和数量正数:从左侧开始截取前count个分隔符负数:从右侧开始截取后|count|个分隔符SUBSTRING_INDEX 嵌套使用:通过两次截取实现中间字段提取字符串解析技巧:利用分隔符和方向参数精准定位目标内容隐式类型转换:MySQL 自动处理字符串到数值的转换性能优化:虚拟列和索引提升大数据量下的查询效率。
2025-05-21 10:23:10
509
原创 SQL次日留存率计算精讲:自连接与多字段去重的深度应用
自连接技术:通过表别名实现同一表的不同时间关联:多字段组合去重统计的关键LEFT JOIN:确保分母统计的完整性,包含所有可能留存的用户索引优化:复合索引显著提升大数据量下的查询性能。
2025-05-20 21:25:54
960
原创 MySQL多条件查询深度解析
开始│├── 是否需要去重?│ ││ ├── 是 → 使用 UNION│ ││ └── 否 → 是否查询同一表?│ ││ ├── 是 → 条件是否有共同索引?│ │ ││ │ ├── 是 → 使用 OR│ │ ││ │ └── 否 → 使用 UNION ALL│ ││ └── 否 → 使用 UNION ALL最终建议在本例中,由于明确要求"结果不去重",最佳方案是使用UNION ALL。同时,为university和gender字段创建合适的索引,可以进一步提升查询性能。
2025-05-17 20:24:04
1058
原创 MySQL刷题相关简单语法集合
由于group by后的输出不可预估,因此在笔试时可能会出现仅使用group by 无法通过测试用例的情况,此时需按用例示范追加 order by!ROUND 函数用于把数值字段舍入为指定的小数位数。distinct 关键字。: limit关键字。
2025-05-17 20:16:11
339
原创 对称二叉树的判定:双端队列的精妙应用
双端队列解法通过巧妙的入队和出队策略,将镜像比较的逻辑转化为队列两端的操作,既保持了迭代方法的优势(避免栈溢出),又直观地实现了节点对的比较。左子树的左节点 → 队列前端左子树的右节点 → 队列前端右子树的右节点 → 队列后端右子树的左节点 → 队列后端这种对称性的设计使得代码简洁高效,是解决对称二叉树问题的一种优雅方式。
2025-05-16 19:17:02
799
原创 589. N叉树的前序遍历迭代法:null指针与栈的巧妙配合
空间可控:避免递归深度过大导致的栈溢出(如树高为1e5时)。灵活性:可方便修改为后序、层序等其他遍历方式(只需调整入栈顺序和标记逻辑)。
2025-05-16 16:37:58
481
原创 层序遍历(BFS)核心逻辑:从二叉树到复杂题型的一通百通
抽象层基础框架逻辑题型定制点队列初始化根节点入队无层级循环while(队列非空)无层内处理for(当前层节点数)节点值收集、指针连接、深度统计等子节点入队left/right入队N叉树:遍历所有子节点入队结果处理保存当前层数据逆序、统计值、取特定位置值等层序遍历是树结构算法中的“基础工具”,其核心价值在于通过队列实现层级的显式管理。无论是简单的层数据收集,还是复杂的节点指针连接,只要题目涉及“层”的概念,均可套用该框架。
2025-05-15 21:30:18
754
原创 102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用
递归是一种解决问题的方法,它通过将问题分解为更小的子问题,并通过调用自身来解决这些子问题。在二叉树的层序遍历中,我们通过递归调用自身来遍历每一层的节点。递归法解决二叉树的层序遍历问题虽然不像队列法那样直观,但它展示了深度优先搜索在树形结构中的巧妙应用。通过理解临时数组的创建逻辑和递归的具体实现,我们能够更好地掌握递归的思想和技巧。在实际应用中,递归法可能在某些情况下比队列法更简洁高效,尤其是对于一些复杂的树形结构或需要深度优先处理的问题。
2025-05-14 20:06:41
942
原创 102. 二叉树的层序遍历详解:队列操作与层级分组的核心逻辑
层序遍历的核心是通过队列的FIFO特性实现层级隔离,并通过固定层节点数的循环确保每层数据准确收集。理解这两大难点后,不仅能轻松解决基础层序遍历问题,还能快速应对各种变种题型。出入队逻辑:当前层节点出队时,子节点按顺序入队,作为下一层的待处理节点,保证层级有序。结果收集逻辑:通过记录当前层节点数,内层循环严格处理固定次数,避免跨层数据污染。掌握这一经典BFS模式,将为解决树结构的层级相关问题打下坚实基础。
2025-05-14 19:48:14
942
原创 二叉树前中后序遍历统一迭代法详解:空标记法与栈操作的艺术
二叉树的 前序、中序、后序 遍历是算法中的经典问题。传统的迭代法需要为每种遍历设计不同的入栈顺序,而 统一迭代法 通过引入 空标记节点,将三种遍历的代码结构统一,极大降低了记忆难度。统一迭代法的核心思想是将 节点的访问 和 值的记录 分离:按遍历顺序的逆序压入节点及其子节点,并在需要记录值的节点后压入 null 作为标记。当栈顶为 null 时,弹出 null 并记录下一个节点的值。本文通过代码解析和出入栈模拟,详细展示了前序、中序、后序遍历的统一迭代法实现,帮助读者深入理解这一技巧的核心思想。
2025-05-14 18:55:22
889
原创 二叉树前序与后序遍历迭代法详解:栈操作与顺序反转的巧妙结合
模拟递归调用:显式栈替代系统栈,避免递归深度过大导致的栈溢出。控制访问顺序:通过入栈顺序调整遍历方向。前序遍历:根节点先行,通过“右左入栈”保证顺序。后序遍历:调整前序入栈顺序为“左右入栈”,反转结果即可。栈操作的核心:理解入栈顺序如何影响遍历方向,并利用反转技巧简化问题。掌握这一思路后,可以轻松应对其他二叉树遍历问题的迭代实现!
2025-05-14 16:53:04
542
原创 94. 二叉树的中序遍历详解:迭代法核心逻辑与出入栈模拟
有左入左,无左入右,自底向上”有左子树时,持续向左入栈;无左子树时,弹出栈顶节点,记录值,并转向右子树;最终遍历顺序是从最左节点开始,自底向上处理。模拟递归调用栈:递归的本质是系统维护的栈,迭代法通过显式栈手动模拟这一过程。避免栈溢出:当树深度较大时,递归可能引发栈溢出,迭代法更安全。中序遍历的迭代法核心在于“左-根-右”的顺序控制。通过栈的压入和弹出操作,可以精确模拟递归的调用过程。向左深入到底,将所有左节点入栈;回溯处理右子树,利用栈实现自底向上的遍历。
2025-05-14 16:30:29
1005
原创 347. 前 K 个高频元素详解:哈希表与优先级队列的经典结合
哈希表用于高效统计元素频率。小顶堆以 O(n log k) 的时间复杂度动态维护前k个高频元素。掌握这两种数据结构的结合使用,是解决此类 Top K 问题的关键。
2025-05-13 17:02:31
437
原创 LeetCode239. 滑动窗口最大值解法心得:单调队列的奥秘
滑动窗口最大值问题是单调队列的经典应用。当遇到需要在滑动窗口中快速查找最大值或最小值的问题时,都可以考虑使用单调队列来优化。核心思想:通过维护一个单调队列,避免重复比较,将时间复杂度从 O(nk) 降低到 O(n)。掌握单调队列的思想后,类似的问题如滑动窗口最小值、区间最大值等都可以迎刃而解。
2025-05-13 15:24:21
821
原创 # 执行 `mvn install:install-file` 时提示 “Unknown lifecycle phase ‘.xxxx‘“ 类问题的解决方案
Maven 命令解析器对含有点号、连字符的参数值识别异常,需通过引号明确参数边界。
2025-05-12 21:18:10
403
原创 leetcode 15.三数之和 思路分析
给定一个整数数组nums,找出所有满足以下条件的不重复三元组i、j、k互不相同;三元组元素之和为0;结果中不存在重复的三元组(如[1, -1, 0]和[-1, 1, 0]视为同一组合,需去重)。排序是基础:有序数组让相同元素相邻,为去重提供条件。分层去重第一层(第一个元素):确保每个不同的起始值仅处理一次,避免重复的“头部”组合。第二、三层(剩余元素):在固定头部的情况下,确保同一层内的中间和尾部元素唯一,避免重复的“身体”和“尾部”组合。逻辑完整性。
2025-05-10 17:13:01
1015
原创 Java解决找不到关键字/lombok注解已配置却未生效问题
在maven的pom中已经配置好了lombok依赖,并且在设置中也打开了启用注解处理,但是在类上使用@DATA等lombok注解后,运行相关服务提示找不到关键字,这通常是由于IDE分配了错误的注解处理器。正常情况应该如上图所示,仅有默认注解处理器,当发现多出了其他的注解处理器时,只需要取消那一分组,统一归至Default组即可解决该问题。
2025-04-26 21:24:21
210
原创 leetcode 209 滑动窗口
以本题为例,本题要求计算目标target值的最小子数组,即我们的窗口中值的和要大于等于target值,此时我们窗口的起始位置才进行滑动,而其中窗口的长度,即为子数组的大小。因为我们的目的是为了找到总和为目标值的最短子数组,因此在for循环开始时,我们要将当前结束位置加入到sum中。
2024-10-01 16:26:57
268
原创 leetcode 844 比较含退格的字符串解析
当下标字符不为‘#’但是计数器不为0的时候,就跳过,然后计数器减1;这个题初拿到手较难理解,很容易落入传统从前向后遍历思想的窠臼中,而这也恰恰导致难以明白“退格”的实现过程。因此,我们首先将该问题拆解成小问题,即遇到“#”跳过,以及比较指定下标的字符是否相等两个小问题。考虑到如果要实现O(n)的时间复杂度以及O(1)的空间复杂度,因此,双指针法为本题的最优解法。两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回。但如果换个思路,倒序遍历,遇到‘#’跳过,那问题就会容易理解的多。
2024-09-25 20:48:26
207
1
原创 Latex表格中,两列之间间断框线
2.在对应行的\\后加入 \cmidrule(r){x-y}表示x行到y行为一条横线。1.导入{booktabs}包。
2024-08-12 17:25:54
1442
原创 【24 Information Fusion】AOBERT: All-modalities-in-One BERT for multimodal sentiment analysis 论文总结
本文引入了一种单流变压器,all - modes - inone BERT (AOBERT)。该模型同时在两个任务上进行预训练:多模态掩模语言建模(MMLM)和对齐预测(AP)。模式之间的依赖和关系可以通过两个预训练任务来确定。AOBERT在CMU-MOSI, CMUMOSEI和UR-FUNNY数据集上取得了最先进的结果。本文中作者主要以三种模态为主(文本+视觉+语音),其中,作者的输入以文本作为锚定模态,与另外两种模态进行配对,即它们是长度为L的向量,维数分别是dTdV和dS。
2024-07-22 15:55:58
1179
原创 解决pip install时出现WARNING: No metadata found in e:\anaconda\envs\xx\lib\site-packages 类问题
在创建虚拟环境后,在环境内通过pip安装版本不同的包,或安装某些包时pip/conda自动更新/切换了某些相关包的版本,导致了环境内不同版本软件包产生了冲突,导致该问题的出现。3.经过步骤2后,如果问题仍没有解决,如:正确版本的软件包未生效;仍然报出同样错误等,则返回步骤2,将该软件包全部删除。4.通过pip install命令重新下载该软件包即可解决问题。1.复制ide/cmd中的报错路径,通过资源管理器打开该路径。2.找到产生冲突包的版本及名称,删除掉不需要的版本软件包。
2024-06-03 11:39:00
1319
原创 多模态情感分析论文整理(2021-2023)
MABSA下游任务论文整理一.MASC任务(一)基于注意力模型的相关论文(二) 基于图卷积网络(GCN)的相关论文二.ASPE任务(一)PIPELINE-BASED ASPE METHOD(二)JOINT-BASED ASPE METHOD(三)UNIFIED-BASED ASPE METHOD(四) TEXT GENERATION-BASED ASPE METHOD一.MASC任务(一)基于注意力模型的相关论文‘‘Show, attend and tell: Neural image captio
2024-05-14 11:00:24
1781
1
原创 21 I3E-ACCESS Targeted ABMSA: An Attention Capsule Extraction论文总结
图中标红的字符是对原文中公式的示例化标注,目的是为了更好的理解原文中的公式,原文Doi如下:10.1109/ACCESS.2021.3126782虽然在2024年的今天,大规模预训练方法已经屡见不鲜甚至说已经霸榜,但是这个模型在一定程度上仍能提供一些启发,如双单峰网络对于模态间信息交互的处理仍然存在一定问题,本文所提出的方法在解决该问题上仍有一定的可借鉴性。可惜的是本文并未提供开源代码。
2024-05-13 10:17:23
656
1
原创 conda换源/查看源/清华源/更新包下载包错误问题汇总
在初次使用不知道如何查看当前源路径有哪些的时候通常有以下两种方法进行查看。添加后,通过1.中的命令查看是否添加成功。
2024-05-12 16:38:55
2881
原创 VLP-MABSA论文概要 2022 ACL(多模态情感分析)
文章介绍了一个针对MABSA任务的特定任务视觉-语言预训练框架(VLP-MABSA),它基于一个统一的多模态编解码器架构,设计用于预训练和下游MABSA任务。提出的VLP-MABSA架构融合了视觉和语言输入,旨在通过利用多模态数据的优势,理解和分析细粒度方面的情感。
2024-03-31 21:21:51
1634
1
原创 No module named ‘fastNLP.modules.torch‘ 问题解决
该问题是由于 fastnlp版本过老,不支持相应的深度学习模块导致的,经尝试,将fastnlp更新至1.0.1可以有效解决该问题。
2024-03-20 16:19:30
224
2
原创 ImportError: cannot import name ‘AutoFeatureExtractor‘ from ‘transformers‘问题解决
该问题是由于过老的transformer版本灭有该模块导致的,经测试只需要更新到4.2.0版本即可有效解决该问题。
2024-03-20 16:11:05
972
1
原创 RuntimeError: Attempting to deserialize object on CUDA device 2 解决办法
【代码】RuntimeError: Attempting to deserialize object on CUDA device 2 解决办法。
2024-03-19 21:47:38
311
1
原创 torch版本始终是CPU版本
最后在排查时发现conda在安装torch时始终调用flexible 策略,即无法找到torch官网上相对应的包,因此始终选取cpuonly版本进行适配。如上三个包,所以只需更改torch官网给出的下载命令,并删除-c后的部分即可完美解决问题。故而考虑到前往conda channel中查看相应的torch库内有哪些适配版本。其中发现我所需要的版本仅有。1.卸载cpuonly包。
2024-03-19 20:50:47
1370
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人