自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 234. 回文链表

对折对比:找中点,反转后半,两头往中间走。由于链表无法直接倒序遍历,我们把链表从中间切开,将后半段原地反转,然后让两个指针分别从“原来的头”和“反转后的尾”出发,一一比对。

2025-12-24 20:05:21 265

原创 206. 反转链表

保存下家,指回前任。不要想整个链表跳转,只关注当前节点(cur:把它到底指向“后面”的箭头,硬拐过来指向“前面”(pre💡口诀记忆:“一存,二反,三进”存下家 (避免断链)反指前任(核心操作)齐梯(双起重机右移)

2025-12-24 20:04:46 233

原创 160. 相交链表

你走过我走过的路,我走过你走过的路,我们终会相遇。两个指针分别走完自己的链表后,重新跳到对方链表的头继续走。因为A+B = B+A,彼此走的总路线一定相同,所以最后一定会在交点(或者终点null)相遇。

2025-12-20 20:09:33 650

原创 240. 搜索二维矩阵 II

站在右上角,看成 BST”。把矩阵的右上角(或左下角)看作二叉树的根节点 (Root)。往左走--> 数值变小。往下走--> 数值变大。这正是二叉搜索树的性质!利用这个性质进行“排除法”搜索。

2025-12-20 20:08:29 535

原创 48. 旋转图像

对角线折叠,再左右翻转。顺时针旋转 90° <->先沿主对角线转置,再水平翻转每一行。💡图像记忆 (手帕折叠法):切一刀 (:沿左上到右下的对角线,把右上角的元素对折到左下角 (转置)。翻一面 (|):把每一行左右对调 (镜像翻转)。结果就是顺时针 90 度!

2025-12-19 20:35:08 253

原创 54. 螺旋矩阵

四面楚歌,步步紧逼”。设定 上下左右 (t, b, l, r) 四个边界,按照 “上$\to$右$\to$下$\to$左” 的顺时针顺序打印。每打印完一条边,立刻将该边界向内收缩一步,并判断是否撞墙(边界交错)。

2025-12-19 20:34:26 469

原创 73. 矩阵置零

先记账,后清算”。不能遍历到一个 0 就立刻把整行整列变 0(因为这会污染后续的遍历,导致全变成 0)。必须先用两个辅助数组把“哪些行、哪些列坏了”记录下来,最后统一执行死刑。

2025-12-16 20:17:50 534

原创 41. 缺失的第一个正数

一个萝卜一个坑”。利用数组下标作为哈希表的 Key。我们要把数值 x 强行交换到下标 x-1 的位置上(例如:数值 1 放下标 0,数值 3 放下标 2)。💡 直观理解:想象你在整理杂乱的带有编号的球(1号球、5号球...)。规则是:拿到 k号球,就把它扔到 第 k-1 个 盒子里。最后从头检查盒子,第一个“球号不对应”的盒子,就是缺少的那个球。

2025-12-16 20:17:18 312

原创 238. 除自身以外数组的乘积

左边乘积x 右边乘积”。想知道除了自己以外所有人的乘积,等于 (自己左边所有人的乘积) x (自己右边所有人的乘积)。💡 直观理解:不要试图去“剔除”自己(不用除法)。而是把自己当成分界线,分别计算左半边和右半边的累积结果,最后左右一拍即合。

2025-12-14 22:37:09 619

原创 189. 轮转数组

整体倒序,再分段还原。通过先将整个数组翻转,把“尾部元素”调到了“头部”,但此时内部顺序是反的。随后分别翻转“前半段”和“后半段”,恢复内部顺序。💡 口诀记忆:“全翻 -> 左翻 -> 右翻”(这里的“左”指前 k 个,“右”指剩余部分)

2025-12-14 22:36:37 403

原创 56. 合并区间

先排序,再接龙”。只要按照左端点排序,重叠的区间就一定会挨在一起。我们只需要看当前区间能不能“接”上结果集里的最后一个区间。

2025-12-13 20:19:22 953

原创 53. 最大子数组和

抱大腿 vs 另起炉灶”:遍历数组,如果前面的累加和(前缀收益)是正数,就加入它(抱大腿);如果是负数或0,就把它丢弃,自己重新开始(另起炉灶)。💡 直观理解:如果你之前的队友攒的是正分f[i-1] > 0),不管多还是少,加上他对你总是有益的 ->接力。如果你之前的队友欠了一屁股债是负分f[i-1] < 0),加上他只会拖累你 ->断开,自己从头算。f[i]:必须以 nums[i] 结尾的最大连续子数组和。

2025-12-13 20:18:37 233

原创 76. 最小覆盖子串

右进左出”:先向右扩展窗口直到满足条件(覆盖所有字符),然后尝试向右收缩左边界(踢出多余字符)以获取最小长度。💡像拉手风琴。右手 (right) 往右拉,直到能包住所有目标音符。左手 (left) 往右缩,只要还能包住音符就尽量缩,缩到不能再缩为止(记录此时的最短距离)。

2025-12-12 21:57:55 678

原创 239. 滑动窗口最大值

维护一个双端队列 (Deque),队列内存放的是下标,对应的数值保持单调递减(队首永远是当前窗口最大的)。💡 直观理解:如果一个元素比前面的元素更晚出现且数值更大,那么前面的元素就“废了”(永远不可能是最大值了),直接淘汰。

2025-12-12 21:57:22 775

原创 560. 和为 K 的子数组

子数组是数组中元素的连续非空序列。现在就需要虚拟化一个数据)

2025-11-09 22:57:30 459

原创 438. 找到字符串中所有字母异位词

已解答中等给定两个字符串s和p,找到s中所有p的的子串,返回这些子串的起始索引。不考虑答案输出的顺序。p。

2025-11-09 22:56:34 428

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

已解答中等提示给定一个字符串s,请你找出其中不含有重复字符的的长度。

2025-11-07 22:00:05 676

原创 42. 接雨水

每次只关注「左右两侧最大高度中较小的那一侧」(因为雨水高度由矮的一侧决定);比如示例中preMax=2始终小于sufMax=3,所以一直计算左指针位置的雨水量,直到左指针移到右指针处;无需额外数组存储所有位置的左右最大高度,只用 2 个变量preMaxsufMax动态更新,既省空间又高效。

2025-11-07 21:57:32 1347

原创 15. 三数之和

中等提示给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。

2025-11-06 23:53:19 1024

原创 11. 盛最多水的容器

已解答中等提示给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。作者:灵茶山艾府来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2025-11-06 23:50:49 444

原创 283. 移动零

移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。

2025-11-05 23:49:47 257

原创 128. 最长连续序列

找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为。给定一个未排序的整数数组。

2025-11-05 23:48:36 564

原创 49. 字母异位词分组

已解答中等给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

2025-11-04 23:53:44 377

原创 1. 两数之和

简单提示给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。你可以想出一个时间复杂度小于O(n2)的算法吗?

2025-11-04 23:49:39 373

原创 82. 删除排序链表中的重复元素 II

如果后面那两个节点的值不一样,cur就移动到下一个节点, 直到后面不足两个节点为止。初始化cur 为dummy node , 判断下一个节点和下下个节点的值是否相等。如果一样就套一个循环, 不断的删除节点, 知道遇到没有节点或者遇到的节点不一样。是需要的, 因为如果开始就有几个重复的节点, 那么可能是会将头节点删除的。删除原始链表中所有重复数字的节点,只留下不同的数字。这个需要dummy node 吗?来源:力扣(LeetCode)给定一个已排序的链表的头。

2025-08-12 22:10:25 267

原创 83. 删除排序链表中的重复元素

思路: cur指向头节点, 如果cur下一个节点的值和上一个节点的相同那就删除这个节点, 否则就移动到下一个节点。删除所有重复的元素,使每个元素只出现一次。如此循环知道cur下一个节点没有值为止。来源:力扣(LeetCode)给定一个已排序的链表的头。

2025-08-12 22:09:55 592

原创 142. 环形链表 ||

指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。下面我们看一个最坏的情况: slow指针刚刚进入环, fast指针刚好在它的前面。这里有一个结论: 当快慢指针相遇的时候, 慢指针还没有走完一圈。那对于其余任何情况 fast指针走的距离都会小于上面着这种情况。如果链表中有某个节点,可以通过连续跟踪。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。给定一个链表的头节点。如果链表无环,则返回。,则在该链表中没有环。

2025-08-11 21:32:43 327

原创 143. 重排链表

这里一直循环直到head2指针中间节点或者head2.next为空就退出循环。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。来源:力扣(LeetCode)

2025-08-11 21:32:12 273

原创 141. 环形链表

指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。她们的相对速度是不是每次循环走一步, 那你一步一步走肯定能遇上slow指针啊。总结: slow指针每次走一步, fast指针每次走两步。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。仅仅是为了标识链表的实际情况。来源:力扣(LeetCode。,判断链表中是否有环。给你一个链表的头节点。

2025-08-09 21:39:30 540

原创 876. 链表的中间结点

简单给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。

2025-08-09 21:38:59 301

原创 逻辑删除的实现

综上, 开启了逻辑删除功能以后,我们就可以像普通删除一样做CRUD,基本不用考虑代码逻辑问题。,只有MybatisPlus生成的SQL语句才支持自动的逻辑删除,自定义SQL需要自己手动处理逻辑删除。因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其它表的办法。为了解决这个问题,MybatisPlus就添加了对逻辑删除的支持。一旦采用了逻辑删除,所有的查询和删除逻辑都要跟着变化,非常麻烦。

2025-08-08 22:18:57 396

原创 25. K 个一组翻转链表

是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。来源:力扣(LeetCode)

2025-08-08 22:16:46 450

原创 92. 反转链表 II

中等给你单链表的头指针head和两个整数left和right,其中。请你反转从位置left到位置right的链表节点,返回。

2025-08-07 22:32:04 269

原创 206. 反转链表

简单给你单链表的头节点head,请你反转链表,并返回反转后的链表。

2025-08-07 22:31:33 533

原创 33. 搜索旋转排序数组

如果 x>nums[n−1],说明 x 在第一段中,那么 target 也必须在第一段中(否则 x 一定在 target 左边)且 x 必须大于等于 target。如果 x≤nums[n−1],说明 x 在第二段中(或者 nums 只有一段),那么 target 可以在第一段,也可以在第二段。如果 target 在第一段(左),x 在第二段(右),说明 x 在 target 右边;如果 target 在第二段(右),x 在第一段(左),说明 x 在 target 左边。,则返回它的下标,否则返回。

2025-08-06 22:06:37 401

原创 153. 寻找旋转排序数组中的最小值

中等提示已知一个长度为n的数组,预先按照升序排列,经由1到n次后,得到输入数组。例如,原数组47注意,数组的结果为数组。给你一个元素值的数组nums,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须设计一个时间复杂度为O(log n)的算法解决此问题。nums1n设 x=nums[mid] 是现在二分取到的数。我们需要判断 x 和数组最小值的位置关系,谁在左边,谁在右边?

2025-08-06 22:05:39 259

原创 1661. 每台机器的进程平均运行时间

text{总处理时间} = (\text{end}_1 + \text{end}_2 + \dots) - (\text{start}_1 + \text{start}_2 + \dots)这一步计算的是每个过程的平均处理时间。通过将总处理时间除以过程的数量,你得到每个。这相当于计算所有过程的结束时间总和减去开始时间总和,进而得到总的处理时间。是一个聚合函数,用于计算指定列或表达式的总和。表达式,用于根据条件对每一行的数据进行不同的处理。表记录了机器的活动日志,每个过程有一个。平均每个过程花费的时间。

2025-08-01 18:33:03 805

原创 197. 上升的温度

表中,但单表查询只能 “逐行处理当前行”,无法直接关联 “当前行” 和 “前一行”。会先产生 “所有可能的组合”(类似两张表的笛卡尔积),但通过。认识一下 DATEDIFF 函数,可以计算两者的日期差。前一天的记录(如 2023-01-01 的温度)。当天的记录(如 2023-01-02 的温度);,实现 “当天” 与 “前一天” 的比较。其他组合(如 a=2 与 b=3)代表 “当前天” 的记录;代表 “前一天” 的记录。是(2-1=1 天)是(3-2=1 天)是(4-3=1 天)

2025-08-01 18:32:30 366

原创 15. 三数之和

中等提示给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。

2025-07-31 21:49:47 1423

原创 167. 两数之和 II - 输入有序数组

中等给你一个下标从开始的整数数组numbers,该数组已按,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是和,则。以长度为 2 的整数数组的形式返回这两个整数的下标index1和index2。你可以假设每个输入,而且你重复使用相同的元素。你所设计的解决方案必须只使用常量级的额外空间。

2025-07-31 21:48:51 306

空空如也

空空如也

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

TA关注的人

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