自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序算法总结

取最右边元素作为基准值。lessBorder记录小于区域的最后一个位置。遍历基准值前面的所有元素。遇到小于基准值的元素,就扩大一位小于区域并交换。遍历结束后,将基准值放到小于区域的后一位。递归处理基准值左右两边的区间。一句话记忆:遇到小的就扩区交换,遍历结束让基准归位,最后递归左右区间。

2026-08-03 00:46:33 762

原创 leetcode 无重复字符的最长子串

计算当前窗口的长度right-left+1,对比并更新maxLength数值,遍历结束后返回maxLength。优势:全程维护一段连续无重复的合法窗口,仅一次遍历即可完成计算,时间复杂度O(n),所有测试用例均可正常通过。定义left作为窗口左边界,right作为窗口右边界,maxLength记录全局最长无重复子串长度。输入字符串s,找出其中不含重复字符的最长连续子串的长度,区分连续子串与非连续子序列。遍历碰到重复字符,直接清空集合、清零当前统计长度,以当前重复字符为起点重新统计子串。

2026-08-01 16:35:01 223

原创 Agent智能体及记忆模块核心知识点整理

记忆模块是Agent用于存储、读取、管理历史信息的核心组件,核心价值是解决大模型上下文窗口有限、无法留存长期历史的痛点,赋予智能体“持久记性”。Embedding是将文字、图片、音频等非结构化数据,转换为固定长度浮点数数组(向量)的技术,核心作用是语义数字化,让计算机可识别、计算文本语义相似度。Prompt即提示词、指令、提示语,是输入大模型(LLM)的所有文本内容,核心作用是告知AI任务目标、执行规则、输出要求。

2026-06-22 00:37:37 292

原创 老鼠与毒酒问题

1. 本质是二进制信息编码,把问题抽象成信息量问题,用老鼠的生死组合唯一映射酒瓶编号;2. 10只老鼠共1024种状态,多余的24种状态无对应酒瓶,不影响结果。

2026-06-21 10:36:06 351

原创 leetcode31 下一个排列

目标:找到仅比原数组大一点的排列,保证增幅最小。把数组看成多位数字,

2026-06-13 20:56:56 203

原创 leetcode 轮转数组

(HashMap --> “映射关系,快速查找;TreeMap --> 排序·key,范围查询(subMap())”)// 因为 (i + 10) % 7 = (i + 3) % 7,结果完全一样。(哈希表是数据结构的抽象概念,Java中使用它是用HashMap)如上图代码,如果不对k取模直接 - n,k过大会造成下标越界。,完全不用额外空间,核心思路是 “通过翻转实现轮转”// 等价的取模逻辑(预处理k后),再根据映射结果重写数组。元素整体移到数组开头,元素整体移到数组末尾。

2026-03-23 13:02:03 213

原创 盛最多水的容器

高度由短边确定,向内移动高边,即使它变得再高,短边依旧没变,反而宽度越缩小了,面积必然缩小。而移动短边,面积虽然也可能缩小,但是起码也有变大的希望。

2026-03-11 21:49:42 29

原创 先序、中序遍历结果 构建二叉树

以「左闭右开」区间为基准递归构建每一层子树,最终通过递归返回值完成二叉树节点的父子关系绑定。

2026-02-20 22:23:15 278

原创 二叉树最近的公共祖先

(find方法最后的return,因为2的情况前面已经被拦截,只剩下1或者0的情况,所以只要大于0就能确定返回1,当前节点是 普通公共祖先)②其他的非最近公共祖先,p和q都是分布在一种情况中。人眼观察:公共祖先中深度最大的那个就是最近公共祖先。2.p/q存在于左子树;1. p/q是根节点;3.p/q存在于右子树。计算机看不到全局二叉树的情况:需要。来勾结父子节点之间的交互。

2026-02-13 23:27:42 185

原创 牛客 NC49 最长的括号子串

子串必须是连续的,且计数是单个单个计1的,所以连续长度可以直接下标相减得到;栈最底加-1,是为了()这种情况计算也成立;

2026-01-31 18:06:26 130

原创 网络基础概念

在协议分层中,数据从上层到下层传递,每一层都会在数据头部添加 本层的协议信息,形成“首部 + 数据”的新数据单元。:在协议分层中,数据从下往上传递,每一层都会剥离本层的协议信息(首部),将剩余数据交给上层继续处理。:将复杂的网络通信功能 拆分成多个独立的层次,每一层负责特定功能,层之间通过接口来交互。被动接受并处理客户端的请求,然后返回响应。:服务器收到请求后,返回给客户端包含处理结果的数据包。:网络中主机或设备的唯一标识。:客户端向服务器发起的,包含特定需求的数据包。:发起网络请求的设备或程序。

2026-01-31 13:08:59 228

原创 leetcode143 重排链表(Java)

(这种适用于 指明要求中间节点是 n/2 的下标位置)要手动指定前半段最后一个节点指向null(虽然后面反转是让此节点的next节点的prev指向null了,但是此节点的next指向还没有断开)

2026-01-22 10:51:34 313

原创 leetcode46 全排列

如果path的长度和原数组nums一样了,代表已经到达一种结果,可以直接添加到ret中;(注意需要重新new一份加入,path是引用类型(List)的对象,直接存引用path,后续回溯删元素的时候会影响存入ret的结果);(下标对应元素在原数组下标,其保存的内容true/false代表是否被使用过)如果当前元素状态是未被使用(false),将其加入到path中,并修改状态为(true);一个一维数组path,表示决策树走的路径,即一种可能的排列结果;1,递归出口:路径填满,存入结果。

2025-12-18 00:31:37 29

原创 leetcode2500 删除每行的最大值(Java)

将 “每次找出每行当前最大值,再取这些值的最大值”,等价转换为 “对每行进行升序排序”—— 排序后,每行的最大值会依次排列在该行的右侧,后续只需。单独实现,不与后续的 “列遍历、最大值累加” 等业务逻辑混杂 —— 既让代码结构更清晰,也增强了逻辑的复用性与可调试性。原操作中 “删除每行最大值” 的动作,无需实际操作数组(避免数组长度变更的繁琐),而是通过。(本题中每行都需要执行排序),因此将其作为。,遍历完所有列即等价于 “矩阵变空”。以 “每行升序排序” 为例,该操作是。

2025-12-17 21:36:17 346

原创 leetcode219 存在重复元素2(Java)

提前返回false,一旦某一次重复元素的下标差不满足。

2025-12-16 19:11:11 164

原创 leetcode155 最小栈(Java)

而。

2025-12-15 17:07:38 163

原创 leetcode56 合并区间(Java)

②合并规则:

2025-12-06 17:59:51 581

原创 leetcode138 随机链表的复制(Java)

1. Node newNodeRandom = map.get(oldNode.random)(取旧节点random对应新节点);2. Node newNodeNext = map.get(oldNode.next)(取旧节点next对应新节点);创建Map<Node, Node>,key为旧链表节点,value为对应新节点(后续通过旧节点可快速找新节点)。1. Node newNode = map.get(oldNode)(取旧节点对应新节点);核心思路:用Map存储“旧节点→新节点”的映射。

2025-12-04 13:34:37 187

原创 leetcode136 只出现一次的数字(Java)

要先检查哈希表表中是否已经存在这个key:若不存在返回0,存在要返回其对应的value;(因为题目表明:除了只出现一次的数字,剩余数字都出现两次,才可以用此方法)④遍历哈希表查找(只出现一次的数字。reasult 初始化为0;奇数项保留,偶数项抵消。②遍历原数组取数字;

2025-12-04 12:00:11 125

原创 leetcode面试题02.04. 分割列表

3.拼接后要将大链表尾部手动指向null,防止因尾不指向null导致链表出错。2.插入是尾插,还要即使更新尾引用指向;1.傀儡节点的创建;

2025-12-02 18:07:21 131

原创 leetcode414 第三大的数

nums[i-1] && +diff == 3),注意使用的是++diff,先自增再赋值。2.从第2个元素开始向后遍历(和前一个元素比较),并设置一个变量diff记录不同数字的个数(初始化1,第一个元素就是第一个不同元素);1.sort升序排序,再调用反转数组方法reverse,实现数组降序排列;3.循环内判断,遇到当前元素与前面元素不相同时,更新diff给加1;5.要是没找到,就返回当前最大的 即第0位元素(数组是降序)。4.当diff计为3时,当前元素为第三大数字,返回当前元素;

2025-12-02 15:36:06 196

原创 leetcode905 按奇偶排序数组

如果是偶数交换无影响,且两个指针都向后移一位;如果是奇数,不会进入交换环节,left指针留下指着这个奇数元素,right移向下一位。if 条件不需要再反复确认left、right停下的位置是否符合要求,只有在两个内层循环都结束或者都在要求位置停下时,才会到达if语句;right从右往左遍历,停在是偶数的位置;后面若继续遇到奇数元素,right指针会一直后移,left则不会触发移动。若遇到偶数元素,触发交换,且left移一位会指向下一个奇数元素。明确指针的 “职责”(左指针管偶数 / 右指针管奇数)

2025-12-01 16:37:06 125

原创 leetcode20 有效括号

pop( ) 取出栈顶,与所有类型右括号一一匹配;(符合一种情况,使用continue跳过本次循环使其继续向下遍历之后的括号)再次检查栈空return stack.isEmpty()。(防止右括号数量不够导致栈内有剩余左括号)(防止字符串中没有左括号来入栈 或 左括号数量不够已经提前取完了)若与以上右括号都不匹配,return false;循环遍历字符串取出字符,如果是左括号则入栈;

2025-12-01 15:35:54 159

原创 leetcode344反转字符串

此外,题目要求“在原地修改数组”,数组是引用类型,“改变数组的引用指向” 并不等同于 “改变原数组内容”。s是方法内的局部变量,随着方法结束,s就会被销毁,外部真正的数组arr并没有改变;for循环应该是 i--。

2025-11-28 15:17:26 148

空空如也

空空如也

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

TA关注的人

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